Notepad ++: reemplazar texto por lotes

Notepad ++: reemplazar texto por lotes


Estoy intentando crear un archivo de diccionario a partir de varias páginas web que encontré en línea. El diccionario indexa las palabras clave para que se puedan encontrar fácilmente en el modo de búsqueda. La información de la página web está dividida en secciones, cada una con una identificación única. Por ejemplo: <div id="word-2857">Andronicus, Titus . . .
el problema es que hay enlaces de referencia en otro texto a otras palabras escritas como:<a href="#word-2857"><i>see Titus Andronicus</i></a>

Entonces, al crear un archivo de diccionario (para Goldendict), las referencias a otras palabras deben escribirse como:<a href="entry://headword">text to display</a>

Desde que hice los encabezados word-2857 en lugar de Andronicus, Titus es bastante inútil, lo que quiero hacer (finalmente) es reemplazar por lotes los enlaces para todas las palabras (hay alrededor de 10,000). Quiero decir, quiero reemplazar todos los enlaces de identificación por su título correspondiente. <a href="#word-2857"><i>see Titus Andronicus</i></a>debe convertirse<a href="entry://Andronicus, Titus">see Titus Andronicus</a>

Ya tengo una lista de todas las palabras que quiero reemplazar con las que quiero reemplazarlas. El problema es que usando Notepad++ solo puedo hacer un reemplazo único a la vez. Hay más de 10.000 palabras y esto llevará demasiado tiempo. Por favor ayude a explicar cómo se puede hacer esto fácilmente.

Gracias

Respuesta1

Bien, aquí está mi solución. Copie todas sus cosas desde Notepad++ a un nuevo libro de Excel. Tiene que estar en la Hoja1. Copie todos los elementos de "Buscar" enumerados en la columna A de la Hoja 2. Coloque los elementos "Reemplazar" correspondientes en la columna B de la Hoja 2. No hay encabezados en la Hoja2, ya que también buscará y reemplazará los valores del encabezado (a menos que modifique el rango "r" en el siguiente código para comenzar en A2).

Ejecute el siguiente script:

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

Esto debería buscar y reemplazar todas sus entradas una por una. Una vez hecho esto, puedes volver a copiarlo en Notepad++. Se detendrá en la primera fila vacía, así que asegúrese de buscar/reemplazar filas que sean continuas.

En caso de que esté oxidado con las macros/scripts de Excel, en Excel, presione alt + F11, haga clic derecho en VBAProject en el árbol de la izquierda y seleccione Insertar > Módulo. Pega el código en el nuevo cuadro que aparece y presiona el botón de reproducción (F5).

Espero que esto ayude, ¡mucha suerte!

información relacionada