Notepad ++: o texto do lote substitui

0


Estou tentando criar um arquivo de dicionário de várias páginas da Web que encontrei on-line. O dicionário indexa as 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: %código%
O problema é que existem links de referência em outro texto para outras palavras escritas como: <div id="word-2857">Andronicus, Titus . . .

Portanto, ao criar um arquivo de dicionário (para Goldendict), as referências a outras palavras devem ser escritas como: <a href="#word-2857"><i>see Titus Andronicus</i></a>

Desde a criação de headwords word-2857 em vez de Andronicus, Titus é bastante inútil, o que eu quero fazer (finalmente) é fazer a substituição em lote de links para todas as palavras (existem cerca de 10.000 delas). Quer dizer, eu quero substituir todos os links de ID para a sua senha correspondente. <a href="entry://headword">text to display</a> deve se tornar <a href="#word-2857"><i>see Titus Andronicus</i></a>

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

Obrigado

    
por user47181 15.08.2014 / 21:01

1 resposta

0

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 Folha1. Copie todos os itens "Localizar" listados na Coluna A da Planilha2. Coloque os itens "Substituir" correspondentes na Coluna B da Planilha2. Nenhum cabeçalho na Planilha2 como ele irá procurar e substituir os valores de cabeçalho também (a menos que você modifique o intervalo "r" no código a seguir para iniciar 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 procurar e substituir todas as suas entradas, uma por uma. Uma vez feito isso, você pode copiá-lo de volta para o Notepad ++. Parará na primeira linha vazia, portanto, verifique se as linhas de substituição estão contínuas.

Caso você esteja enferrujado com Macros / Scripts do Excel, no excel, pressione alt + F11, clique com o botão direito do mouse 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!

    
por 15.08.2014 / 22:53