Temukan dan Ganti Nama Nomor dengan Digit

1

Saya memiliki bagian panjang kode yang memiliki nama angka, yang ingin saya ganti dengan simbol angka saja.

Apa yang saya punya:

PartOne
PartTwo
PartThree
PartFour
PartFive
...
PartOneHundred

Apa yang saya inginkan:

Part1
Part2
Part3
Part4
Part5
...
Part100

Ada ide tentang cara menyelesaikan ini di Notepad ++ atau serupa? Akan sangat memakan waktu untuk menggantinya dengan tangan. Ini sepertinya tugas yang mudah, tetapi saya tidak dapat menemukan hasil seperti itu dalam pencarian saya.

tomysshadow
sumber
Apa yang akan menjadi PartOneHundredAndOne? Saya berasumsi 101, tetapi apakah Anda memiliki "dan" di string Anda?
Dave

Jawaban:

0

Langsung di Notepad ++, saya ragu. Mengubah teks menjadi angka memiliki banyak logika, dan bahkan regex super mewah mungkin tidak cocok untuk tugas tersebut.

Jika mereka benar-benar berurutan (seperti contoh Anda) dan benar-benar berdekatan (seperti contoh Anda), saya mungkin akan membangunnya kembali di spreadsheet favorit saya, lalu salin / tempel dari ColumnB ke Notepad ++:

# | ColumnA  | ColumnB
1 | =row()   | ="Part"&A1
2 | =row()   | ="Part"&A2
...

Jika Anda bersedia menggunakan bahasa skrip, Perl telah Lingua :: EN :: Words2Nums modul untuk membantu membuat hidup Anda lebih mudah

cat source.txt | perl -MLingua::EN::Words2Nums -e "while (<>) { if(/^Part/) { s/^Part//; print 'Part' . words2nums($_) . qq{\n}; } else { print $_; }; } " > destination.txt

Script ini mencakup fitur yang baris yang dimulai dengan "Bagian" akan dikonversi menjadi numerik, sedangkan baris yang tidak hanya akan melewati langsung. Misalnya, menambahkan beberapa baris ke contoh Anda, saya mendapatkan output berikut dari skrip saya:

Part1
ignore
Part2
Part3
Part4
keep in place
Part5
Part100
okay

Tidak akan mengejutkan saya jika Python memiliki modul yang serupa (atau apa pun yang Python sebut dengan modul Perl). Jika Anda lebih nyaman dengan Python, saya akan pergi rute itu, karena dengan begitu Anda dapat membangun langsung ke Notepad ++ menggunakan modul PythonScript, dan tidak harus melakukan File-IO dalam skrip.

PeterCJ
sumber
Apa yang akhirnya saya lakukan adalah menemukan dan mengganti teks "dua puluh" menjadi 2, "tiga puluh" menjadi 3, dan kemudian "tiga" menjadi 3 dan "empat" menjadi 4 dan seterusnya, dan memperbaiki kesalahan yang tertinggal seperti dengan 10-19 secara manual. Ini juga solusi yang mungkin.
tomysshadow