Delphi 在TStringList中添加多个分隔符

Delphi 在TStringList中添加多个分隔符,delphi,delimiter,tstringlist,Delphi,Delimiter,Tstringlist,这是我的分隔文本:$HEHDT,10.17,T*28$HEHDT,10.18,T*2A等等 逗号是我的句子分隔符。但是,我也希望使用星号作为分隔符 我想要实现的输出是: $HEHDT 10.17 T 28 $HEHDT 10.18 T 2A 如何在delphi中指定多个句子分隔符?这是我目前掌握的代码 var MyStringList: TStringList; i: Integer; begin MyStringList:= TStringList.Create; MyStr

这是我的分隔文本:$HEHDT,10.17,T*28$HEHDT,10.18,T*2A等等

逗号是我的句子分隔符。但是,我也希望使用星号作为分隔符

我想要实现的输出是:

$HEHDT 10.17 T 28 $HEHDT 10.18 T 2A

如何在delphi中指定多个句子分隔符?这是我目前掌握的代码

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;
对于上面的代码,它只使用逗号作为分隔符。如何包含逗号和星号这两个分隔符


非常感谢!=)

Delphi stringlist非常好,可以让您“免费”解析一个分隔符上的文本。如果需要一组分隔符,则需要使用StrUtils.SplitString:


您可以使用ReplaceString,将所有星号更改为逗号。将您的作业行更改为:

 String.DelimitedText := ReplaceString('$HEHDT,10.17,T*28'+#13#10 +'$HEHDT,10.18,T*2A', '*',
                         ',', [rfReplaceAll]);
上面的代码应该可以工作

注意:我认为DelimitedText属性也将空格视为分隔符。因此,如果字符串中有空格,则代码可能无法按预期的方式运行

  • 简而言之,答案是否定的
  • 但是你可以使用定制的TStringList

  • TStringList只接受一个分隔符

    Embarcadero RAD Studio帮助的摘录:

    Classes.TStrings.DelimitedText

    描述

    将TStrings对象中的所有字符串表示为单个字符串 分隔字符串

    使用DelimitedText获取或设置TStrings对象中的所有字符串 在单个字符串中,由 分隔符属性


    为了能够使用多个分隔符,您应该通过从TStringList类派生一个新类来“扩展”TStringList类的功能

    您可以找到TStringListEx类的示例源代码,该类具有类似的行为,您可以轻松地适应您的需求

    摘录

    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.DelimitedText属性的字符串以及其余的分隔符(第一个被设置为TStringList.delimiter属性)可以实现您的目标,除了paulsm4和Robert Frank的文章中指出的解决方案之外,您还可以使用正则表达式您可以使用两个字符串列表,一个使用逗号,另一个使用星号作为分隔符。然后将第一个字符串的文本属性指定给第二个字符串的分隔文本属性。

    请问您的Delphi版本是什么?您最好使用ExtractString以获得更有效的字符串splitting@user539484:只要他有合适的德尔福版本。@menjaraz,为什么?ExtractStrings可以追溯到拉美西斯时代。@user539484:你说得对。我被误导了,我想到了StrUtils中引入的SplitString。如果您将StrictDelimeter设置为True,它不会给您带来任何空间方面的痛苦。