Secara bertahap ganti string yang diberikan


12

Katakanlah saya memiliki teks seperti di bawah ini:

AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)

Sekarang saya ingin mengganti nndengan angka seperti itu

AC (0)
AC (1)
AC (2)
AC (3)
AC (4)
AC (5)
AC (6)
AC (7)
AC (8)
AC (9)
AC (10)

Saya biasa M-x replace-regexp nn RET \# RETmenyelesaikan ini.

Pertanyaan:

  1. Saya ingin memulai nomor pengganti untuk memulai dari 1daripada dari 0. Atau lebih tepatnya mulai dari angka yang ditentukan katakan 25. Bagaimana saya harus memodifikasi perintah di atas?
  2. Bagaimana cara mengganti nndengan angka seperti 001, 002.... 998, 999dll - Maksud saya dengan nol di depan

Ini bukan yang Anda minta, tapi cara lain untuk melakukannya adalah dengan menggunakan makro bersama register.
Caterpillar

Jawaban:


12

Teknik umum

String pengganti Anda dapat berisi kode pelat acak. Dari dokumentasi untuk replace-regexp :

Dalam panggilan interaktif, teks pengganti mungkin mengandung '\,' diikuti oleh ekspresi Lisp yang digunakan sebagai bagian dari teks pengganti. Di dalam ungkapan itu, '\ &' adalah string yang menunjukkan seluruh kecocokan, '\ N' kecocokan sebagian, '# &' dan '#N' masing-masing nilai numerik dari 'string-ke-angka', dan '# 'sendiri untuk' ganti-hitung ', jumlah penggantian terjadi sejauh ini, mulai dari nol.

Kita dapat menggunakan teknik ini dalam beberapa cara.

Mulai dari 1

Yang ingin kami lakukan adalah mengganti nndengan yang lebih banyak dari yang replace-countAnda gunakan sebelumnya \#.

Panggil #'replace-regexpdengan argumen \,(1+ \#):

C-M-% nn \,(1+ \#)akan menggantikan nn dengan 1pertama, kemudian 2, 3, dll

Mulai dari 25

Anda dapat memodifikasi ini dengan tidak hanya menambahkan satu, tetapi (dalam contoh Anda) 25:

C-M-% nn \,(+ 25 \#)

Nol terkemuka

Atau kita bisa gunakan formatuntuk menambahkan angka nol di depan. Ini akan menggantikan nndengan 000, 001, 002, dll Anda dapat menggabungkan kode pelat lainnya di atas untuk mulai 001, 025atau apa pun yang Anda inginkan.

C-M-% nn \,(format "$03d" \#)


5

Anda juga bisa menggunakan cua-mode.

Pilih persegi panjang région (semua nn) dan kemudian M-x cua-rectangle-mark-mode.

Selanjutnya, M-ndan terima nilai default.


Saya berharap saya bisa menerima ini sebagai jawaban juga
Prasanna
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.