웹기안기 ExecReplace Action 문의

var act = HwpCtrl.CreateAction("ExecReplace");
var set = act.CreateSet();
set.SetItem("Direction", 2);  // 찾기 방향 - 0: 정방향, 1:역방향, 2: 전체문서
set.SetItem("FindString", "입력");  // 찾을 단어
set.SetItem("ReplaceString", "출력"); // 바꿀 단어
set.SetItem("ReplaceMode", 1); // 바꾸기 모드
set.SetItem("IgnoreMessage", 1); // 오류메세지 무시
act.Execute(set);

안녕하세요.

웹기안기에서 특정 단어를 찾아 바꾸기를 실행하려고 합니다.
위 코드를 실행하면 단어가 블록처리만 되고 바뀌지는 않는데 어떻게 처리해야 하는지 문의드립니다.

감사합니다.

2개의 좋아요

액션아이디를 “ExecReplace” 대신에 "AllReplace"로 바꿔보세요ㅎ

녹화_2024_03_01_01_01_47_993

참고로,
ExecReplace 액션은 처음 실행시 "찾기"만 수행합니다.
(해당 단어가 선택된 상태가 돼요.)
다른 동작 없이 ExecReplace를 한 번 더 실행하시면
선택된 단어를 바꾸면서, 다음 단어를 찾아 선택합니다.
단어를 찾아냈으면 True를,
더 이상 바꿀 단어가 없으면 False를 리턴하므로
반복문 안에 넣어서 다른 작업과 병행할 때 유용합니다.

ExecReplace가 더 유용한 경우

예를 들면, 아래처럼 바뀐 단어들의 위치(get_pos)를
별도로 리스트로 모아두고 싶다든지
(어느 부분이 바뀌었는지 확인하는 용도 등?)
녹화_2024_03_01_03_25_09_871

표 안에 있는 "입력"만 "출력"으로 바꾸고,
본문의 "입력"은 그대로 두고 싶다면?
녹화_2024_03_01_03_32_59_239

ExecReplace는 이런 식으로 활용하실 수 있어요.

1개의 좋아요