这是我的分隔文字:$ HEHDT,10.17,T * 28 $ HEHDT,10.18,T * 2A等......
逗号是我的句子分隔符。但是,我也希望使用星号作为我的分隔符。
我想要实现的输出是:
$ HEHDT 10.17 Ť 28 $ HEHDT 10.18 Ť 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;
对于上面的代码,它只将逗号作为分隔符。如何包含2个分隔符,包括逗号和星号?
非常感谢提前! =)
答案 0 :(得分:7)
Delphi stringlist足以让您能够“免费”解析一个分隔符上的文本。如果你想要一个 set 的分隔符 - 那么你需要使用StrUtils.SplitString:
答案 1 :(得分:0)
您可以使用ReplaceString,将所有星号更改为逗号。将您的作业行更改为:
String.DelimitedText := ReplaceString('$HEHDT,10.17,T*28'+#13#10 +'$HEHDT,10.18,T*2A', '*',
',', [rfReplaceAll]);
上面的代码应该有效。
注意:我相信DelimitedText属性也将空格视为分隔符。因此,如果您的字符串有空格,那么您的代码可能无法按照您期望的方式运行......
答案 2 :(得分:0)
TStringList只接受一个分隔符。
Embarcadero RAD Studio帮助摘录:
Classes.TStrings.DelimitedText
描述
将TStrings对象中的所有字符串表示为单个 分隔字符串。
使用DelimitedText获取或设置TStrings对象中的所有字符串 在单个字符串中,由。指定的字符分隔 分隔符属性。
为了能够使用多个分隔符,您应该通过从中派生新类来“扩展”TStringList类的功能。
您可以找到here 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.Delimeter属性)可以实现您的目标,除了解决方案指向在 paulsm4 和 Robert Frank的帖子中,你也可以使用正则表达式。
答案 3 :(得分:0)
您可以使用两个字符串列表,一个使用逗号,另一个使用星号作为分隔符。然后将第一个的text属性分配给第二个的分隔文本属性。