|
strtok라는 함수를 이용하면 되겠군요.
strtok에서 문장을 나누는 기준을 "!" 로 잡아서 한 번 나누고...
그러면 각 문장에서 "!"는 생략된 상태로 나눠지게 됩니다.
원문의 첫글자가 "!"면 첫문장은 첫"!" 다음의 문장이 되니 주의하시면 되구요.
원문의 첫글자가 "!"면 홀수번째 문장의 앞뒤에 "!"를 붙이고
아니면 짝수번째 문장의 앞뒤에 "!"를 붙입니다.
그러고 나서 "!"가 들어있지 않은 문장을 다시 "."를 기준으로 나눕니다.
그리고 원래의 위치에 "."를 다시 붙여줘야겠지요.
문장안에 "!"가 들어있는 지 그렇지 않은 지를 알려면 AnsiString클래스의 Pos함수를 쓰시구요.
Pos의 리턴값이 "0"이면 들어있지 않다는 뜻입니다.
간단히 예를 들면
"ab.c!d.e.!fg.hi"
이걸 한 번 나누면
나눌때는 이런 식으로...
String input = "ab.c!d.e.!fg.hi";
char *p;
TStringList l = new TStringList();
while( ( p = strtok( input.c_str(), "!" ) ) != NULL )
l->Add( String( p ) );
"ab.c"와 "d.e."와 "fg.hi"로 나눠지죠
여기서 두번째 문장에 !를 붙입니다.
"ab.c" "!d.e.!" "fg.hi"
여기서 "!"가 없는 문장을 다시 "."기준으로 나눕니다.
"ab" "c" "!d.e.!" "fg" "hi"
그리고 원문과 비교해서 필요한 곳에 "."을 다시 넣어줍니다.
"ab." "c" "!d.e.!" "fg." "hi"
이런 식으로..
쥬니짱 님이 쓰신 글 :
: 여러줄에 텍스트가 있는데 마침표가 찍힌 부분가지만 구분해서 여러 문장으로 분리해서 나오게
: 하는데요... 근데 앞에 < ! 문장 !! > 이렇게 되면 느낌표 사이에 있는 마침표는 인식안하구
: 느낌표로만 구분해서 분리할려구 하거든요...
: 예를들면 이런 문장이 있다면
: North Korea as one of the axis of evil countries was not a precursor to war.
: We have no intention of er invading North Korea.
: South Korea has no intention of attacking North Korea[; nor er] does America.
: We're purely defensive [and the reason] we have to be defensive [is] because there is a threatening position on the DMZ.
: Bush spoke at a news conference in Seoul.
:
: 이런 문장이 있으면 현재는 마침표(.)가 찍힌 부분까지
: North Korea as one of the ["]axis of evil["] countries was not a precursor to war.
: 분리
: "We have no intention of er invading North Korea.
: 분리
: 이런대요....
: !North Korea as one of the ["]axis of evil["] countries was not a precursor to war.
: "We have no intention of er invading North Korea.!
: 앞뒤로 느낌표를 찍으면 중간에 마침표는 인식안하구 느낌표로만 분리되는거죠...
: 또 담줄부터는 다시 마침표로
: South Korea has no intention of attacking North Korea[; nor er] does America.
: 분리
: 좀 난해하죠?....죄송합니다....
: 이걸 어떻게 표현해야 할지 몇칠째 고민하다가 이렇게 죄송한 마음으로 도움을 요청합니다...
: 고수님들 초보를 불쌍히 여기시어 도와주세요....감사합니다...
|