gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 14:32:36 26 4
gpt4 key购买 nike

我在 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] 应返回'foo bar'

sl[1] 确实返回 'foo'

现在的分隔符似乎是 '^' AND ' '

有什么想法吗?

最佳答案

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

由于您使用的版本不支持上述内容(正如提交答案后所澄清的那样),因此您有两个选择:

  1. 找到一个您知道在原始文本中不会使用的字符(例如下划线),在拆分之前将所有空格转换为该字符,并在拆分后转换回来。这是robosoft的建议。
  2. 如果文本中没有引号和空格,可以使用 Alexander的技巧,并将文本换行在反向命令的分隔符之间,以便 'hello hello^bye bye' 变成 '"hello hello"^"bye bye"'。如果您确实选择了这条路径并且它适合您,请接受 Alexander 的答案而不是我的答案,他还提供了实现它的代码。

两种不使用 StrictDelimiter 的解决方法都有局限性:第一个需要一些未使用的字符,第二个不需要原始文本中的引号和空格。

也许是时候升级到较新版本的 Delphi 了:)

关于Delphi:即使设置了 Delimiter,TStringList Delimiter 也始终是空格字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1335027/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com