Notepad++: Text stapelweise ersetzen

Notepad++: Text stapelweise ersetzen


Ich versuche, aus mehreren Webseiten, die ich online gefunden habe, eine Wörterbuchdatei zu erstellen. Das Wörterbuch indiziert Stichwörter, sodass sie im Suchmodus leicht gefunden werden können. Die Informationen auf der Webseite sind in Abschnitte unterteilt, die jeweils eine eindeutige ID haben. Beispiel: <div id="word-2857">Andronicus, Titus . . .
Das Problem besteht darin, dass es in anderen Texten Verweislinks zu anderen Wörtern gibt, die wie folgt geschrieben sind:<a href="#word-2857"><i>see Titus Andronicus</i></a>

Beim Erstellen einer Wörterbuchdatei (für Goldendict) müssen Verweise auf andere Wörter daher wie folgt geschrieben werden:<a href="entry://headword">text to display</a>

Da die Erstellung von Stichwörtern wie Wort-2857 anstelle von Andronicus, Titus ziemlich nutzlos ist, möchte ich (endlich) die Links für alle Wörter (es gibt ungefähr 10.000 davon) stapelweise ersetzen. Ich meine, ich möchte alle ID-Links durch das entsprechende Stichwort ersetzen. <a href="#word-2857"><i>see Titus Andronicus</i></a>sollte werden<a href="entry://Andronicus, Titus">see Titus Andronicus</a>

Ich habe bereits eine Liste aller Wörter, die ich ersetzen möchte, mit den Wörtern, durch die ich sie ersetzen möchte. Das Problem ist, dass ich mit Notepad++ immer nur eine einzige Ersetzung auf einmal vornehmen kann. Es sind mehr als 10.000 Wörter und das würde zu lange dauern. Bitte helfen Sie mir, indem Sie erklären, wie das einfach geht.

Danke

Antwort1

OK, hier ist meine Lösung. Kopieren Sie alle Ihre Sachen aus Notepad++ in eine neue Excel-Arbeitsmappe. Sie müssen sich in Blatt1 befinden. Kopieren Sie alle aufgelisteten „Suchen“-Elemente in Spalte A von Blatt2. Fügen Sie die passenden „Ersetzen“-Elemente in Spalte B von Blatt2 ein. Keine Kopfzeilen in Blatt2, da auch die Kopfzeilenwerte gesucht und ersetzt werden (es sei denn, Sie ändern den Bereich „r“ im folgenden Code so, dass er bei A2 beginnt).

Führen Sie das folgende Skript aus:

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

Dies sollte alle Ihre Einträge nacheinander suchen und ersetzen. Sobald dies erledigt ist, können Sie es zurück in Notepad++ kopieren. Es wird bei der ersten leeren Zeile angehalten, stellen Sie also sicher, dass die Zeilen, die Sie suchen/ersetzen, fortlaufend sind.

Falls Sie mit Excel-Makros/-Skripten nicht vertraut sind: Drücken Sie in Excel Alt + F11, klicken Sie mit der rechten Maustaste auf das VBA-Projekt im linken Baum und wählen Sie Einfügen > Modul. Fügen Sie den Code in das neue angezeigte Feld ein und drücken Sie die Wiedergabetaste (F5).

Hoffe, das hilft, viel Glück!

verwandte Informationen