찾기 및 바꾸기

찾기 및 바꾸기

Aspose.Words FOSS for .NET은(는) Range.Replace()을(를) 통해 정규식 기반 찾기 및 바꾸기를 제공하며, FindReplaceOptions을(를) 통해 구성할 수 있고, 고급 시나리오에서는 Aspose.Words.Replacing 네임스페이스의 사용자 정의 IReplacingCallback 구현을 사용할 수 있습니다.


기본 찾기 및 바꾸기

Range.Replace(pattern, replacement)은(는) 범위 전체에 걸쳐 정규식 검색 및 교체를 수행합니다 — Document.Range에서 호출될 경우 전체 문서가 대상이 됩니다. Replace(pattern, replacement, options) 오버로드는 보다 정밀한 제어를 위해 FindReplaceOptions 객체를 받아들입니다: MatchCase와 FindWholeWordsOnly는 매치 동작을 조정하고, Direction( FindReplaceDirection 값, Forward 또는 Backward)는 검색 방향을 제어하며, ApplyFont / ApplyParagraphFormat은 교체가 새로운 텍스트뿐만 아니라 새로운 서식을 포함하도록 합니다.


서식 인식 및 구조 옵션

FindReplaceOptions에는 매치가 통과하거나 무시할 수 있는 문서 구성 요소를 결정하는 여러 플래그가 포함됩니다: IgnoreDeleted와 IgnoreInserted는 추적 변경 내용이 매칭에 포함되는지를 제어하고, IgnoreFields와 IgnoreFieldCodes는 필드 결과 텍스트와 필드 코드를 검색할지를 제어하며, IgnoreFootnotes는 각주/미주 내용을 제외하고, IgnoreStructuredDocumentTags와 IgnoreShapes는 각각 콘텐츠 컨트롤과 도형 텍스트를 제외합니다. UseSubstitutions은 교체 문자열에서 정규식 치환 구문(예: $1)을 사용할 수 있게 합니다. LegacyMode와 UseLegacyOrder은 이전 로직으로 처리된 문서와의 호환성을 위해 오래된 매칭 동작을 유지합니다.


IReplacingCallback을 사용한 사용자 정의 교체 로직

고정된 교체 문자열로 표현할 수 없는 교체 로직의 경우, IReplacingCallback와 그 단일 Replacing(args) 메서드를 구현하고, 구현을 FindReplaceOptions.ReplacingCallback에 할당하거나 (또는 FindReplaceOptions(replacingCallback) 생성자에 직접 전달합니다). 콜백은 각 매치마다 ReplacingArgs 객체를 받으며, Match(기본 정규식 매치), MatchNode/MatchEndNode(매치를 포함하는 문서 노드), MatchOffset, 그리고 설정 가능한 Replacement 문자열을 노출합니다. 콜백에서 ReplaceAction 값을 반환하면 — Replace, Skip, 또는 Stop — 해당 매치를 교체할지, 그대로 둘지, 전체 찾기/바꾸기 작업을 중단할지를 제어합니다.


팁 및 모범 사례

  • Document.Range에 Replace()를 호출하여 문서 전체 교체를 수행하거나, 작업 범위를 제한하려면 더 좁은 Range(예: 단일 섹션 범위)에서 호출합니다.
  • FindWholeWordsOnly = true를 설정하여 검색어가 더 긴 단어의 부분 문자열로 매치되는 것을 방지합니다.
  • 교체가 기본 필드 명령 텍스트가 아니라 표시된 필드 결과에 적용되도록 하려면 IgnoreFieldCodes = true를 사용합니다.
  • 교체 텍스트가 고정 문자열이 아니라 매치 컨텍스트(주변 노드, 서식 또는 위치)에 따라 달라지는 경우, 사후 처리보다 IReplacingCallback를 선호합니다.
  • 조건이 충족되면 콜백에서 ReplaceAction.Stop를 반환하여 남은 모든 매치를 처리하지 않고 찾기/바꾸기 작업을 조기에 종료합니다.

일반적인 문제

문제원인수정
교체가 새로운 서식을 적용하지 않음ApplyFont/ApplyParagraphFormat이 FindReplaceOptions에 설정되지 않음옵션 객체에 관련된 서식 속성을 설정합니다.
추적된 변경 삭제 내에서 예기치 않게 일치 항목이 발견됨IgnoreDeleted이 기본값으로 남음삭제된 리비전 콘텐츠를 건너뛰려면 IgnoreDeleted = true를 설정하십시오.
교체 텍스트에서 정규식 그룹 참조가 대체되지 않음UseSubstitutions이(가) 활성화되지 않음UseSubstitutions = true을(를) 설정하면 $1-스타일 치환을 활성화할 수 있습니다
콜백 기반 교체가 예상대로 중지되지 않습니다콜백이 Stop 대신 Replace/Skip을 반환합니다작업이 종료될 때 Replacing()으로부터 ReplaceAction.Stop을 반환합니다

FAQ

Range.Replace()는 정규 표현식을 지원합니까?

예 — pattern 인자는 정규 표현식이며, 범위의 텍스트와 매치됩니다.

전체 문서가 아니라 특정 섹션 내에서만 텍스트를 교체하려면 어떻게 해야 하나요?

Document.Range 대신 해당 섹션의 Range에 Replace()를 호출하십시오.

매치된 내용에 따라 교체 텍스트를 달리하려면 어떻게 해야 하나요?

IReplacingCallback을 구현하고, ReplacingArgs에서 매치 세부 정보를 읽은 다음, ReplacingArgs.Replacement를 계산된 텍스트로 설정하고, ReplaceAction.Replace을 반환하십시오.

문서 전체를 역방향으로 검색하여 찾기/바꾸기를 할 수 있나요?

예 — FindReplaceOptions.Direction을 FindReplaceDirection.Backward으로 설정합니다.


API Reference 요약

클래스 / 메서드설명
Range.Replace()범위 전체에 걸친 정규식 찾기/바꾸기, 선택적 FindReplaceOptions 포함
FindReplaceOptionsreplace 작업에 대한 일치 동작, 포맷 및 구조적 범위를 구성합니다
FindReplaceDirection열거형: Forward, Backward
IReplacingCallback사용자 정의 per-match replace 로직을 위한 인터페이스
ReplacingArgsper-match 데이터가 IReplacingCallback.Replacing()에 전달됩니다
ReplaceAction각 매치 결과를 제어하는 열거형: Replace, Skip, Stop

참조

 한국어