C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[16570] Re:여러줄에 텍스트를 마침표로 구분해서 한 라인씩 나오게 하는데요...
Julien [julien] 1289 읽음    2002-03-20 19:59
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.
: 분리
: 좀 난해하죠?....죄송합니다....
: 이걸 어떻게 표현해야 할지 몇칠째 고민하다가 이렇게 죄송한 마음으로 도움을 요청합니다...
: 고수님들 초보를 불쌍히 여기시어 도와주세요....감사합니다...

+ -

관련 글 리스트
16570 Re:여러줄에 텍스트를 마침표로 구분해서 한 라인씩 나오게 하는데요... Julien 1289 2002/03/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.