Notepad++ : 일괄 텍스트 교체 수행

Notepad++ : 일괄 텍스트 교체 수행


온라인에서 찾은 여러 웹페이지에서 사전 파일을 만들려고 합니다. 사전은 검색 모드에서 쉽게 찾을 수 있도록 표제어를 색인화합니다. 웹페이지의 정보는 각각 고유 ID를 가진 섹션으로 구분됩니다. 예: <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>

Andronicus 대신 word-2857이라는 표제어를 만들었기 때문에 Titus는 꽤 쓸모가 없습니다. 제가 (마지막으로) 하고 싶은 일은 모든 단어에 대한 링크를 일괄 교체하는 것입니다(약 10,000개가 있습니다). 내 말은 모든 ID 링크를 해당 표제어로 바꾸고 싶다는 뜻입니다. <a href="#word-2857"><i>see Titus Andronicus</i></a>되어야 한다<a href="entry://Andronicus, Titus">see Titus Andronicus</a>

나는 바꾸고 싶은 단어로 바꾸고 싶은 모든 단어의 목록을 이미 갖고 있습니다. 문제는 Notepad++를 사용하면 한 번에 하나의 고유한 교체만 수행할 수 있다는 것입니다. 10,000단어가 넘으니 시간이 너무 오래 걸립니다. 이 작업을 쉽게 수행할 수 있는 방법을 설명하는 데 도움을 주십시오.

감사해요

답변1

좋아, 여기 내 해결책이 있습니다. Notepad++의 모든 내용을 새로운 Excel 통합 문서에 복사하세요. Sheet1에 있어야 합니다. Sheet2의 A열에 나열된 "찾기" 항목을 모두 복사합니다. Sheet2의 B열에 일치하는 "바꾸기" 항목을 넣습니다. Sheet2에는 헤더 값도 검색하고 바꾸기 때문에 헤더가 없습니다(A2에서 시작하도록 다음 코드에서 "r" 범위를 수정하지 않는 한).

다음 스크립트를 실행합니다.

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을 누르고 왼쪽 트리에서 VBAProject를 마우스 오른쪽 버튼으로 클릭한 다음 삽입 > 모듈을 선택하세요. 나타나는 새 상자에 코드를 붙여넣고 재생 버튼(F5)을 누르십시오.

이것이 도움이 되기를 바랍니다. 행운을 빕니다!

관련 정보