Я пытаюсь создать файл словаря из нескольких веб-страниц, которые я нашел в Интернете. Словарь индексирует заголовки, чтобы их можно было легко найти в режиме поиска. Информация на веб-странице разделена на разделы, каждый из которых имеет уникальный идентификатор. Например: <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 вместо Андроника, он довольно бесполезен, и я хочу (наконец-то) сделать пакетную замену ссылок для всех слов (их около 10000). Я хочу заменить все ссылки на идентификаторы на соответствующие им ключевые слова <a href="#word-2857"><i>see Titus Andronicus</i></a> должен стать <a href="entry://Andronicus, Titus">see Titus Andronicus</a>

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

Спасибо

1 ответ1

0

ОК, вот мое решение. Скопируйте все свои вещи из Notepad++ в новую книгу Excel. Это должно быть в Листе1. Скопируйте все перечисленные элементы "Найти" в столбце "Лист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, щелкните правой кнопкой мыши на VBAP-проекте в дереве слева и выберите «Вставка»> «Модуль». Вставьте код в появившееся новое поле и нажмите кнопку воспроизведения (F5).

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

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