Notepad ++: Substitua o texto em lote

Notepad ++: Substitua o texto em lote


Estou tentando criar um arquivo de dicionário a partir de várias páginas da Web que encontrei online. O dicionário indexa palavras-chave para que possam ser facilmente encontradas no modo de pesquisa. As informações na página da web são divididas em seções, cada uma com um ID exclusivo. Por exemplo: <div id="word-2857">Andronicus, Titus . . .
O problema é que existem links de referência em outro texto para outras palavras escritas como:<a href="#word-2857"><i>see Titus Andronicus</i></a>

Portanto, ao criar um arquivo de dicionário (para Goldendict), as referências a outras palavras devem ser escritas como:<a href="entry://headword">text to display</a>

Desde que criei os headwords word-2857 em vez de Andronicus, Titus é bastante inútil, o que eu quero fazer (finalmente) é substituir em lote os links para todas as palavras (há cerca de 10.000 delas). Quero dizer, quero substituir todos os links de ID pelo cabeçalho correspondente. <a href="#word-2857"><i>see Titus Andronicus</i></a>Deve se tornar<a href="entry://Andronicus, Titus">see Titus Andronicus</a>

Já tenho uma lista de todas as palavras que quero substituir pelo que quero substituí-las. O problema é que usando o Notepad++ só posso fazer uma substituição única por vez. Existem mais de 10.000 palavras e isso levará muito tempo. Por favor, ajude a explicar como isso pode ser feito facilmente.

Obrigado

Responder1

OK, aqui está minha solução. Copie todas as suas coisas do Notepad++ para uma nova pasta de trabalho do Excel. Tem que estar na Plan1. Copie todos os itens "Localizar" listados na Coluna A da Planilha2. Coloque os itens "Substituir" correspondentes na Coluna B da Planilha2. Não há cabeçalhos na Planilha2, pois ele também pesquisará e substituirá os valores do cabeçalho (a menos que você modifique o intervalo "r" no código a seguir para começar em A2).

Execute o seguinte 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

Isso deve pesquisar e substituir todas as suas entradas, uma por uma. Quando terminar, você pode copiá-lo de volta para o Notepad++. Ele irá parar na primeira linha vazia, portanto, certifique-se de localizar/substituir linhas contínuas.

Caso você esteja enferrujado com macros/scripts do Excel, no Excel, pressione alt + F11, clique com o botão direito no VBAProject na árvore à esquerda e selecione Inserir> Módulo. Cole o código na nova caixa que aparece e aperte o botão play (F5).

Espero que isso ajude, boa sorte!

informação relacionada