GetText로 텍스트 읽어온후 수정후 계속 읽기

안녕하세요? GetText로 텍스트로 문서 읽은 후 조건에 따라 텍스트 수정 후 다음 텍스트 계속 읽으면서 체크할려고 하는데요 잘 안되네요
c#으로 한글 오토메이션 하고 있습니다
문서에서 "1. " 형식으로 시작하는 단락의 문자열을 찾은 후 "1. " 형식의 "숫자+점+빈칸"을 전체 문서에서 제거할려고 하는데요
처음 1개는 삭제가 되는데 그 다음 GetText로 읽을려고 하면 리턴코드가 0으로 그 다음 진행이 안되고 while 문에서 계속 무한 반복 하고 있습니다

특정 형식(1. 내용…)의 텍스트를 찾은 후 수정한 다음 계속해서 다음 텍스트를 검색하고 싶은데 어떻게 해야 할까요?

수정을 하지 않고 1. 형식의 텍스트를 검색하면 하면
"1. 내용~~ "
“2. 내용~~”
“3. 내용~~”
과 같이 검색은 다 되는데요… 수정 후에는 그 다음 검색이 안되네요

아래는 현재 c# 코드 입니다.
미리 감사드립니다 ^^;

string pattern = @"^\d+\.\s*";      // "1. 형식을 찾습니다"

hwp.InitScan(0x00, 0x0007, 0, 0, -1, -1);
//0 = 텍스트 정보 없음.
//1 = 리스트의 끝.
//2 = 일반 텍스트.
//3 = 다음 문단.
//4 = 제어문자 내부로 들어감.
//5 = 제어 문자를 빠져 나옴.
//101 = 초기화 안됨. (InitScan() 실패 또는 InitScan()를 실행하지 않음)
//102 = 텍스트 변환 실패
while (true)
{
    
    int ret = hwp.GetText(out string text);
    Debug.WriteLine($"리턴코드 : {ret}");
    if (ret == 1)
    {
        Debug.WriteLine("문서의 끝입니다");
        break;
    }
    if (ret == 0)
    {
        //hwp.Run("MoveNextPara");        // 다음 문단으로 이동
        continue;     // 텍스트 정보 없음                }
    }
    text = text.Trim();             // 앞뒤 공백 제거
    if (text.Length < 2) continue;      // 2글자 미만이면 건너뛰기
    Debug.WriteLine(text);      // 읽은 텍스트 출력

    bool match = Regex.IsMatch(text, pattern);      // text가 패턴과 일치하는지 (1. 내용 형식인지)
    // 형식 일치하면
    if (match)
    {
        hwp.MovePos(201, 0, 0);     // 해당 위치로 이동        (여기에서 이미 문단 시작으로 이동함)
        hwp.Run("MoveParaBegin");       // 문단 시작으로 이동
        hwp.Run("DeleteWord");            // 시작 단어 삭제
    }  
}
hwp.ReleaseScan();

무엇을 하시려는지 잘 이해가 안되네용 ㅎ
“1.”, “2.” 이런걸 지우려는건가요??

네… 문서 전체의 앞에 있는 번호들만 모두 지울려구요

괜찮으시면 샘플로 파일을 좀 주시면 그걸로 테스트 해볼수있을거 같은데용

거래처 데이타라 파일을 드리긴 힘들거 같고
복잡하진 않습니다.

  1. 본문의 목적
    본문은 다음과 같은 내용의…
  2. 본문의 개요
    본문은 개요는 같은 내용의…
  3. 본문의 의미
    본문의 의미는 아래 내용의…

이런내용의 앞에 번호를 모두 지우고 그림을 넣을려구 하고 있습니다.
따로 스타일이 매겨져 있는건 아니라서 단순합니다.

https://blog.naver.com/firstdrive/223580549335

요기에 테스트 해본 내역을 참고 해주시면 좋겠네용
라인별 블럭을 잡고 텍스트를 가져와서 위에 적어주신 코드를 써서 해봤습니다~

알려주신대로 번호 찾아 지우는건 성공했습니다. ^^;
근데 스타일을 적용할려고 했는데 희한하게 앞에 두개는 되는데 나머지가 안되네요

if (match)
{
// 앞 단어(1. 형식) 삭제
hwp.Run(“MoveParaBegin”);
hwp.Run(“DeleteWord”);

 // text에 "위 내용" 이 있으면 두번째 스타일 적용하기
 if (text.Contains("위 내용"))
 {
      // 스타일 적용 (두번째
      hwp.HAction.GetDefault("StyleEx", hwp.HParameterSet.HStyle.HSet);                                
      hwp.HParameterSet.HStyle.Apply = 1;                                
      hwp.HAction.Execute("StyleEx", hwp.HParameterSet.HStyle.HSet);
  }

}

아, 텍스를 수정하니 안됐었나 봅니다. 앞에 두글자를 지웠었는데

hwp.HAction.Run("MoveParaBegin");       // 현재 커서의 문단 시작으로 이동
hwp.HAction.Run("DeleteWord");          // 단어 지우기

// 텍스트가 변경되면 다시 초기화 해줘야 함!!!!
hwp.ReleaseScan();
hwp.InitScan(0x00, 0x0007, 0, 0, -1, 1);    // 다시 초기화

다시 InitScan 해주니까 잘 되네요 ㅎㅎ

InitScan - ReleaseScan 사이에서 데이터 수정이 발생하면 스캔 정보가 무효화됩니다.
그래서 자답하신 방법대로 InitScan으로 다시 초기화를 해주셔야 합니다.

감사합니다.

1개의 좋아요