반응형
Delphi : StringList Delimiter는 Delimiter가 설정되어 있어도 항상 공백 문자입니다.
TStringList 클래스의 구분 기호에 문제가 있습니다. 구경하다:
var
s: string;
sl: TStringList;
begin
sl := TStringList.Create;
s := 'Users^foo bar^bar foo^foobar^barfoo';
sl.Delimiter := '^';
sl.DelimitedText := s;
ShowMessage(sl[1]);
end;
sl[1]
반환해야합니다. 'foo bar'
sl[1]
반환합니까 'foo'
구분자가 이제 '^'
AND 인 것 같습니다.' '
어떤 아이디어?
s1.StrictDelimiter := True
공백이 구분자로 간주되지 않도록 설정해야 합니다 . 자세한 내용은 여기에서 확인하세요 .
위를 지원하지 않는 버전에서 작업하기 때문에 (답변을 제출 한 후 명확하게 설명한대로) 두 가지 옵션이 있습니다.
- 원본 텍스트 (예 : 밑줄)에서 사용되지 않을 것으로 알고있는 문자를 찾고 분할하기 전에 모든 공백을 해당 문자로 변환 한 다음 분할 후 다시 변환하십시오. 이것은 robosoft 의 제안입니다.
- 당신은 텍스트에 인용 부호와 공백이없는 경우 사용할 수 있습니다 알렉산더 그래서,의 트릭과 반전 명령 구분 기호 사이의 텍스트 줄 바꿈
'hello hello^bye bye'
회전에'"hello hello"^"bye bye"'
. 이 경로를 선택하고 작동하는 경우 내 것이 아닌 Alexander의 대답을 수락하십시오. 그는 또한 그것을 구현하는 코드를 제공합니다.
사용하지 않는 두 가지 해결 방법 StrictDelimiter
에는 제한이 있습니다. 첫 번째 해결 방법에는 사용 하지 않은 문자가 필요하고 두 번째 해결 방법 에는 원래 텍스트에 반전 된 쉼표와 공백이 필요하지 않습니다.
아마도 델파이의 최신 버전으로 업그레이드 할 때입니다. :)
sl.DelimitedText := '"' + StringReplace(S, sl.Delimiter, '"' + sl.Delimiter + '"', [rfReplaceAll]) + '"';
Ryan은 Delphi에서 ExtractStrings () 함수를 사용하여이 문제에 대한 훌륭한 솔루션을 제공합니다. 보다:
구분 기호를 사용하여 TStringList에 대한 문자열을 구문 분석하는 것은 공백에서도 구문 분석하는 것 같습니다 (Delphi).
따라서 귀하의 경우 sl.Delimiter 및 sl.DelimitedText에 대한 호출을 아래 줄로 바꿉니다. ExtractStrings ([ '^'], [], PChar (S), sl);
sl.Text := StringReplace(S, sl.Delimiter, sLineBreak, [rfReplaceAll]);
작업은 Delphi 7에서 "장갑처럼"입니다. 이것은 Alexander의 Trick을 적용한 후의 내 기능입니다.
procedure Split (const Delimiter: Char; Input: string; const Strings: TStrings) ;
begin
Assert(Assigned(Strings)) ;
Strings.Clear;
Strings.Delimiter := Delimiter;
Strings.DelimitedText := '"' + StringReplace(Input, Delimiter, '"' + Delimiter + '"', [rfReplaceAll]) + '"' ;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := 'Users^foo bar^bar foo^foobar^barfoo';
Split('^',Edit1.Text,Memo1.Lines);
end;
감사합니다!
반응형
'UFO ET IT' 카테고리의 다른 글
릴리스 빌드에서 assert ()를 사용할 때 사용하지 않는 변수 경고 방지 (0) | 2021.01.13 |
---|---|
Checkstyle에서 파일에 대한 모든 검사를 억제하는 방법은 무엇입니까? (0) | 2021.01.13 |
C #에서 제네릭 메서드의 형식 매개 변수 확인 (0) | 2021.01.12 |
다른 요소의 높이와 일치하도록 버튼의 높이를 얻는 방법은 무엇입니까? (0) | 2021.01.12 |
행이 문자열과 일치하는 데이터 프레임에서 행 제거 (0) | 2021.01.12 |