|
간단한 문제를 너무 어렵게 생각하고 계신 것은 아닌지 모르겠습니다.
제 생각에는 변수하나를 두어 처리하면 될 것 같습니다. 변수 하나를 두고 !를 만나면 true로 만들고, *를 만나면 false를 만들고, 그 사이는 모두 skp하는 형태이면 되지 않을까요. 아래는 제가 가상으로 만들어 보았습니다. 전체 로직이 없어 대충 만들었습니다.
String S = "";
// TStringList 배열에 버퍼를 비움
SectionList->Clear();
// Vector 배열의 버퍼를 비움
paragraphList.clear();
// Memo로 부터 읽어온 Text에 앞뒤 공백을 지움
Text = Text.Trim();
bool ignoreBlock = false;
for ( int i = 0; i < Text.Length (); i++ )
{
char c = Text[i+1];
if(c== '\t' || c== '\r') continue;
if(c == '\n')
{
int n = SectionList->Count - 1;
paragraphList.push_back(n);
continue;
}
if( c == '!' && ignoreBlock == false )
{
ignoreBlock = true;
continue;
}
if( ignoreBlock && c == '*' )
{
iqureBlock = false;
continue;
}
if ( ignoreBlock )
continue;
S += String(c);
// .(마침표)를 기준으로 TStringLis 배열에 삽입
if(c == '.')
{
S = S.Trim();
SectionList->Add(S);
S = "";
}
}
쥬니짱 님이 쓰신 글 :
: String S = "";
: // TStringList 배열에 버퍼를 비움
: SectionList->Clear();
: // Vector 배열의 버퍼를 비움
: paragraphList.clear();
: // Memo로 부터 읽어온 Text에 앞뒤 공백을 지움
: Text = Text.Trim();
: for(int i=0; i<Text.Length(); i++)
: {
: char c = Text[i+1];
: if(c== '\t' || c== '\r') continue;
: if(c == '\n')
: {
: int n = SectionList->Count - 1;
: paragraphList.push_back(n);
: continue;
: }
:
: S += String(c);
: // .(마침표)를 기준으로 TStringLis 배열에 삽입
: if(c == '.')
: {
: S = S.Trim();
: SectionList->Add(S);
: S = "";
: }
: }
:
: 위에 저런 로직이 있는데요...제가 기능을 추가 할려구 하는데....그게 참 어렵네요...
: 전에도 질문을 했는데...대답이 없으셔서....ㅜㅜ
: 지금은 .(마침표)를 기준으로 문장을 끈는데....문장중에 !(느낌표)로 시작해서 *(별표)로
: 끝나는 문장은 .(마침표)로 문장을 분리 안하도록 하고 싶거든요...
: 예를 들어...
: abcdefg.
: hijklmn.
: opqrstu.
: vwxyz.
: 이런 문장이 있음 지금은 .(마침표)를 기준으로 한 문장씩만(abcdefg.) 메모에 나오거든요...
: 그런데...
: !abcdefg.
: hijklmn.*
: opqrstu.
: vwxyz.
: 이렇게 되어있으면 위 두문장(! ~~ *)은 .(마침표)를 무시하고 같이 나오구요...
: 다음 두 문장은 (~~.) 이렇게 나오게 해야 하는데..넘 어렵네요....
: 고수님들 제발 어떻게 해야할지 갈켜 주세용.....감사합니다....
:
|