델파이에서 문자열을 특정문자로 나누기 (split 함수)
절름발이 프로그래머/Delphi / 2009. 11. 19. 14:00
http://www.torry.net/quicksearchd.php?String=faststrings&Title=Yes
에 있는 FastStrings 모듈을 이용하면, Split() 함수가 있지만,
델파이 2009 이상에서는, 유니코드 지원때문에 위 모듈을 사용할 수 없다.
나중에 알게된 사실이지만, 위의 Split 함수는 TStrings를 사용하므로, 폼과 관련된 객체를 사용하지 않는다면 쓸 수 없다고 합니다. 완벽하게 확인되지는 않았지만, 문제가 발생한 경우를 당해봤습니다.
그래서, 함수를 만들어서 사용할 수 있다.
참고한 곳은
// 문자열을 구분자(문자)를 기준으로, 분해하는 함수
// 사용전에, 반드시 TStringList를 생성하고, 사용후 free 해야됨.
procedure Split(Input: string; const Delimiter: Char; var Strings: TStringList) ;
begin
Assert(Assigned(Strings)) ;
Strings.Clear;
ExtractStrings([Delimiter], [' '], PChar(Input), Strings);
end;
여기까지가 아주 안전한 방법입니다.
-------------------------------------------------------------------------
이것은 이전에 작성한 내용으로 참고할 만하지만, 그렇게 쓸모 있지는 않습니다.
참고한 곳은
procedure Split(const Input: string; const Delimiter: Char; const Strings: TStrings);
begin
Assert(Assigned(Strings));
Strings.Clear;
Strings.Delimiter := Delimiter;
Strings.DelimitedText := Input;
end;
아예,
http://delphi.about.com/cs/adptips2002/a/bltip0902_2.htm
이렇게 직접 토큰화 함수를 만들어서 할 수도 있군요.
이렇게 직접 토큰화 함수를 만들어서 할 수도 있군요.