加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 05:25:32 所属栏目:大数据 来源:网络整理
导读:我在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
我在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读