Notepad++: выполнить пакетную замену текста

Notepad++: выполнить пакетную замену текста


Я пытаюсь создать файл словаря из нескольких веб-страниц, которые я нашел в сети. Словарь индексирует заглавные слова, чтобы их можно было легко найти в режиме поиска. Информация на веб-странице разделена на разделы, каждый из которых имеет уникальный идентификатор. Например: <div id="word-2857">Andronicus, Titus . . .
Проблема в том, что в другом тексте есть ссылки на другие слова, записанные как:<a href="#word-2857"><i>see Titus Andronicus</i></a>

Поэтому при создании файла словаря (для Goldendict) ссылки на другие слова должны быть записаны так:<a href="entry://headword">text to display</a>

Так как заголовочные слова word-2857 вместо Andronicus, Titus довольно бесполезны, то что я хочу сделать (наконец-то) - это сделать пакетную замену ссылок для всех слов (их около 10 000). Я имею в виду, что я хочу заменить все ссылки ID на соответствующие им заголовочные слова. <a href="#word-2857"><i>see Titus Andronicus</i></a>должно стать<a href="entry://Andronicus, Titus">see Titus Andronicus</a>

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

Спасибо

решение1

Хорошо, вот мое решение. Скопируйте все ваши данные из Notepad++ в новую книгу Excel. Она должна быть на Листе 1. Скопируйте все перечисленные элементы «Найти» в столбец A Листа 2. Поместите соответствующие элементы «Заменить» в столбец B Листа 2. Никаких заголовков на Листе 2, так как он будет искать и заменять также значения заголовков (если вы не измените диапазон «r» в следующем коде, чтобы начать с A2).

Запустите следующий скрипт:

Sub FindReplaceAll()
Dim FindString, ReplaceString As String
Dim r As Range

Set r = Sheet2.Range("A1")

Do While Not r.Value = 0
    FindString = r.Value
    ReplaceString = r.Offset(0, 1).Value

    Sheet1.Cells.Replace What:=FindString, Replacement:=ReplaceString, LookAt:= _
        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Set r = r.Offset(1, 0)
Loop

MsgBox "Done!"

End Sub

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

Если вы еще не знакомы с макросами/скриптами Excel, в Excel нажмите alt + F11, щелкните правой кнопкой мыши VBAProject в дереве слева и выберите Вставить > Модуль. Вставьте код в новое появившееся поле и нажмите кнопку воспроизведения (F5).

Надеюсь, это поможет, удачи!

Связанный контент