Q&A

  • 특정문자를 기준으로 문자열을 파싱하는 방법은? (Pos 이용)
예를 들어...

str = '111/222/333/444/555'



이값이 있을때..



'/'문자를 기준으로 값들을 분리해서

111, 222, 333, 444, 555를 배열에다 넣으려고 합니다.



pos라는 함수를 사용하는 걸로 압니다..



222, 333, 444의 값들을 구해야 하는데...



잘 안되네요...



아시면 좀 가르쳐 주세요...



머리가 너무 아파요~~ ㅜ.ㅜ



2  COMMENTS
  • Profile
    최석기 2000.09.02 08:13
    안녕하세요..

    델파이세상(http://www.freechal.com/delphiworld)에 최석기입니다..



    용일님이 답변한 거랑 전 조금 다르게 사용해서 참고하세요..



    어차피 배열 사용이라면 전 TStringList를 사용하거든요..



    var

    tempStrList: TStringList;



    begin

    str = '111/222/333/444/555'



    tempStrList := TStringList.Create;

    tempStrList.Text := StringReplace(str,'/',#13,[rfReplaceAll, rfIgnoreCase]);

    //이런 식으로 사용하시면 각 tempStrList[0]부터 tempStrList[4]까지 각각 구분 삽입

    end;



    달팽이 wrote:

    > 예를 들어...

    > str = '111/222/333/444/555'

    >

    > 이값이 있을때..

    >

    > '/'문자를 기준으로 값들을 분리해서

    > 111, 222, 333, 444, 555를 배열에다 넣으려고 합니다.

    >

    > pos라는 함수를 사용하는 걸로 압니다..

    >

    > 222, 333, 444의 값들을 구해야 하는데...

    >

    > 잘 안되네요...

    >

    > 아시면 좀 가르쳐 주세요...

    >

    > 머리가 너무 아파요~~ ㅜ.ㅜ

    >

  • Profile
    최용일 2000.09.02 08:14
    안녕하세요. 델파이세상(http://www.freechal.com/delphiworld)의 최용일입니다.



    제가 쓰는 Csv파싱하는 루틴입니다. SeperatorChar(',')만 '/'로 바꾸어 주세요...



    function ParseCsvStr(const CsvStr: string; Index: Integer): string;

    const

    SeperatorChar: Char = ',';

    var

    P: PChar;

    CurIndex, DivPos: Integer;

    begin

    if Index < 0 then

    Exit;



    Result := '';

    P := PChar(CsvStr);

    CurIndex := 0;

    repeat

    DivPos := Pos(SeperatorChar, string(P));

    if CurIndex = Index then

    begin



    if DivPos <> 0 then

    Result := Copy(string(P), 1, DivPos - 1)

    else

    Result := Copy(string(P), 1, Length(string(P)));



    Exit;

    end;



    Inc(P, DivPos);

    Inc(CurIndex);

    until P = '';

    end;



    사용예)



    str = '111/222/333/444/555'



    First := ParseCsvStr(Str, 0); // First = '111'

    Second := ParseCsvStr(Str, 1); // Second = '222'

    Third = ParseCsvStr(Str, 2); // Third = '333'



    ^^ 항상 즐코하세요.



    달팽이 wrote:

    > 예를 들어...

    > str = '111/222/333/444/555'

    >

    > 이값이 있을때..

    >

    > '/'문자를 기준으로 값들을 분리해서

    > 111, 222, 333, 444, 555를 배열에다 넣으려고 합니다.

    >

    > pos라는 함수를 사용하는 걸로 압니다..

    >

    > 222, 333, 444의 값들을 구해야 하는데...

    >

    > 잘 안되네요...

    >

    > 아시면 좀 가르쳐 주세요...

    >

    > 머리가 너무 아파요~~ ㅜ.ㅜ

    >