1

У меня есть длинный фрагмент кода, в котором есть числовые имена, которые я хотел бы заменить только числовыми символами.

Что я имею:

PartOne
PartTwo
PartThree
PartFour
PartFive
...
PartOneHundred

Что я хочу:

Part1
Part2
Part3
Part4
Part5
...
Part100

Любые идеи о том, как сделать это в Notepad++ или аналогичный? Было бы очень много времени, чтобы заменить их все вручную. Кажется, что это должно быть легкой задачей, но я не могу найти такой результат в моих поисках.

1 ответ1

0

Прямо в Notepad++ я в этом сомневаюсь. Преобразование текста в число имеет много логики, и даже супер-необычные регулярные выражения, вероятно, не подходят для этой задачи.

Если они действительно последовательные (как ваш пример) и действительно являются смежными (как ваш пример), я бы, вероятно, просто перестроил его в моей любимой электронной таблице, а затем скопировал / вставил из ColumnB в Notepad++:

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

Если вы хотите использовать язык сценариев, в Perl есть модуль Lingua::EN::Words2Nums, который поможет сделать вашу жизнь проще

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

Этот скрипт включает в себя функцию, заключающуюся в том, что строки, начинающиеся с "Part", будут преобразованы в числовые, тогда как строки, которые не будут проходить прямо через них. Например, добавив пару строк в ваш пример, я получил следующий вывод из моего скрипта:

Part1
ignore
Part2
Part3
Part4
keep in place
Part5
Part100
okay

Меня не удивит, если в Python есть подобный модуль (или как бы он ни называл свой эквивалент модулей Perl). Если вам удобнее работать с Python, я бы пошел по этому пути, потому что тогда вы могли бы встроиться непосредственно в Notepad++ с помощью модуля PythonScript, и вам не пришлось бы выполнять File-IO в сценарии.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .