Delphi:StringList即使设置了Delimiter,分隔符也始终是空格字符

前端之家收集整理的这篇文章主要介绍了Delphi:StringList即使设置了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] SHOULD return’foo bar’

sl [1] DOES return’foo’

看来,分隔符现在是“^”和“

有任何想法吗?

解决方法

对于不被视为分隔符的空格,应该设置s1.StrictDelimiter:= True,更多信息 here

由于您使用的版本不支持上述(如答案提交后所述),您有两种选择:

>查找您认为不会在原始文本中使用的字符(例如下划线),在分割之前将所有空格转换为该字符,并在分割后转换回。这是robosoft的建议。
>如果你在文本中没有反向的逗号和空格,你可以使用Alexander的技巧,在反向命令中的分隔符之间包装文本,这样’hello hello ^ bye bye’会变成’“hello hello”^“ “’。如果你选择这个路径并且它为你工作,请接受亚历山大的答案,而不是我的,他还提供代码来实现它。

不使用StrictDelimiter的两种解决方法都有以下限制:第一个需要一些未使用的字符,第二个在原始文本中不需要反向逗号和空格。

也许是时候升级到更新版本的Delphi

猜你在找的Delphi相关文章