Acr*_*ron 54 delphi tstringlist delphi-7 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;
Run Code Online (Sandbox Code Playgroud)
sl[1] 应该回来 'foo bar'
sl[1] 回来了 'foo'
看来分隔符现在是'^'AND' '
有任何想法吗?
Roe*_*ler 84
你应该设置s1.StrictDelimiter := True空格不被认为是分隔符,这里有更多信息.
由于您使用的是不支持上述内容的版本(在提交答案后已明确说明),因此您有两种选择:
'hello hello^bye bye'转向'"hello hello"^"bye bye"'.如果您确实选择了此路径并且它适合您,请接受Alexander的答案而不是我的答案,他还提供了实现它的代码.两种不使用的变通方法StrictDelimiter都有限制:第一个需要一些未使用的字符,第二个不需要在原始文本中使用引号和空格.
也许是时候升级到更新版本的Delphi了:)
Ale*_*lex 18
sl.DelimitedText := '"' + StringReplace(S, sl.Delimiter, '"' + sl.Delimiter + '"', [rfReplaceAll]) + '"';
Run Code Online (Sandbox Code Playgroud)
小智 6
Ryan 在 Delphi 中使用 ExtractStrings() 函数为这个问题提供了一个很好的解决方案。看:
使用分隔符将字符串解析为 TStringList,似乎也解析空格(Delphi)
所以在你的情况下,用下面的行替换对 sl.Delimiter 和 sl.DelimitedText 的调用: ExtractStrings(['^'], [], PChar(S), sl);
| 归档时间: |
|
| 查看次数: |
73600 次 |
| 最近记录: |