我在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