2012-02-27 1 views
5

이상 1 개 구분 기호를 추가이 내 구분 된 텍스트 : $ HEHDT, 10.17, T * 28 $ HEHDT, 10.18, 등등 T의 *의 2A 및 ...는 TStringList를

쉼표 내 문장 구분 기호입니다. 그러나 별표를 구분 기호로 사용하고 싶습니다. 내가 달성하고자하는

출력은 다음과 같습니다

$ HEHDT에게 10.17 T $ HEHDT 10.18 T 2A

어떻게 델파이에서 1 문장 구분자 이상을 지정합니까? 이것은 내가 지금까지 가지고있는 코드이다.

var 
    MyStringList: TStringList; 
    i: Integer; 
begin 
    MyStringList:= TStringList.Create; 

    MyStringList.Delimiter := ',' 
    MyStringList.DelimitedText := '$HEHDT,10.17,T*28'+#13#10 +'$HEHDT,10.18,T*2A' +#13#10; 

    for i= 0 to MyStringList.Count-1 do 
    ShowMessage(MyStringList[i]); 

    MyStringList.Free; 
end; 

위 코드의 경우 쉼표 만 구분 기호로 사용됩니다. 쉼표와 별표 두 구분 기호를 어떻게 포함합니까?

미리 감사드립니다. =)

+0

델파이 버전은 무엇입니까? – menjaraz

+0

더 적합한 문자열 분할을 위해 ExtractString을 사용하는 것이 더 좋습니다 – OnTheFly

+0

@ user539484 : 해당 델파이 버전이있는 경우 제공하십시오. – menjaraz

답변

0

당신은 쉼표 모든 별표를 변경하고 ReplaceString를 사용할 수 있습니다. 할당 선을 다음으로 변경하십시오.

String.DelimitedText := ReplaceString('$HEHDT,10.17,T*28'+#13#10 +'$HEHDT,10.18,T*2A', '*', 
         ',', [rfReplaceAll]); 

위의 코드를 사용해야합니다.

참고 : DelimitedText 속성은 공백을 구분 기호로 간주합니다. 따라서 문자열에 공백이 있으면 코드가 예상대로 동작하지 않을 수 있습니다 ...

+3

StrictDelimeter를 True로 설정하면 공간에 대한 슬픔이 생기지 않습니다. –

0
  1. 짧은 대답은 아니오입니다.
  2. 그러나 사용자 정의 TStringList를 사용할 수 있습니다.

TStringList를 한 단 하나의 구분 받아들입니다. 엠바 카데로 RAD 스튜디오 도움말에서

발췌 :

Classes.TStrings.DelimitedText

설명

는 TStrings를 모든 문자열이 단일 구분 된 문자열로 객체를 나타냅니다.

사용 DelimitedText는 TStrings를 모든 문자열이 구분 속성에 의해 지정된 문자로 구분하여 하나의 문자열에 객체 가져 오거나 설정합니다.


당신이 그것에서 새로운 클래스를 파생시켜 TStringList를 클래스의 기능을 "확장"해야 보다 구분 기호를 사용할 수있게합니다.

hereTStringListEx 클래스의 샘플 소스 코드는 요구 사항에 쉽게 적응할 수있는 유사한 동작을 제공합니다.

발췌

TStringListEx = class(TStringList) 
private 
    FDelimiter: String; 
    function GetDelimitedText: String; 
    procedure SetDelimitedText(const Value: String); 
published 
    property Delimiter: String read FDelimiter write FDelimiter; 
    property DelimitedText: String read GetDelimitedText write SetDelimitedText; 
end; 

구분자의 나머지 (TStringList.Delimeter 속성으로 설정되는 첫 번째)와 TStringList.DelimitedText 속성 설정 문자열 전처리 이루어진 해결 달성 귀하의 목표와 솔루션에서 떨어져 paulsm4로버트 프랭크의 게시물을 가리키는 지적 정규 표현식 사용할 수 있습니다.

0

두 개의 문자열 목록을 사용할 수 있습니다. 하나는 쉼표를 사용하고 다른 하나는 별표를 구분 기호로 사용합니다. 그런 다음 첫 번째 텍스트 속성을 두 번째 텍스트 속성의 구분 된 텍스트 속성에 할당합니다.