Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
StringBuilder。在Delphi中拆分?_Delphi - Fatal编程技术网

StringBuilder。在Delphi中拆分?

StringBuilder。在Delphi中拆分?,delphi,Delphi,有谁知道在Delphi中使用StringBuilder的好分割过程吗?您最好使用TStringlist.DelimitedText(或任何其他非抽象的TStrings子类)。它更像是传统的Delphi方式,实现了string.Split在.Net中的功能(假设我记得正确的话) e、 g.在管道上拆分|字符 var SL : TStrings; i : integer; begin SL := TStringList.Create; try SL.Delimiter :=

有谁知道在Delphi中使用StringBuilder的好分割过程吗?

您最好使用TStringlist.DelimitedText(或任何其他非抽象的TStrings子类)。它更像是传统的Delphi方式,实现了string.Split在.Net中的功能(假设我记得正确的话)

e、 g.在管道上拆分|字符

var
  SL : TStrings;
  i : integer;
begin
  SL := TStringList.Create;
  try
    SL.Delimiter := '|';
    SL.StrictDelimiter := True;
    SL.DelimitedText := S;
    for i := SL.Count - 1 do
    begin
      // do whatever with sl[i];
    end;
  finally
   SL.Free;
  end;
end;

您可能还需要处理QuoteChar属性

您最好使用TStringlist.DelimitedText(或任何其他非抽象的TStrings子类)。它更像是传统的Delphi方式,实现了string.Split在.Net中的功能(假设我记得正确的话)

e、 g.在管道上拆分|字符

var
  SL : TStrings;
  i : integer;
begin
  SL := TStringList.Create;
  try
    SL.Delimiter := '|';
    SL.StrictDelimiter := True;
    SL.DelimitedText := S;
    for i := SL.Count - 1 do
    begin
      // do whatever with sl[i];
    end;
  finally
   SL.Free;
  end;
end;

您可能还需要处理QuoteChar属性

您还可以查看我的问题,了解允许您执行拆分类型操作的通用实用程序函数
GetStringPart
NumStringParts

您还可以查看我关于此问题的解答,了解允许您执行拆分类型操作的通用实用程序函数
GetStringPart
NumStringParts

是什么让你认为StringBuilder适合做这项工作?嗨,Rob,因为我的实现是通过一次添加一个字符来构建令牌,所以我认为StringBuilder将是解决方案的一部分。但是,Gerry的StringList.DelimitedText解决方案运行良好(阅读它的实现,我可以看到在令牌中添加单个字符是一个很弱的解决方案。我需要速度,因为我正在读取1600行1600个令牌,或者250万个令牌!你怎么会认为StringBuilder是适合这项工作的工具呢?嗨,Rob,因为我的实现是通过在每行添加一个字符来构建令牌有一段时间,我认为StringBuilder将是解决方案的一部分。然而,Gerry的StringList.DelimitedText解决方案工作得很好(阅读其实现我可以看出,在令牌中添加单个字符是一个薄弱的解决方案。我需要速度,因为我正在读取1600行1600个令牌,或250万个令牌!您应该设置“SL.StrictDelimiter:=true;”使其生效。否则为Chr(1)..也将被用作分隔符。谢谢,Gerry。这比我使用StringBuilder进行的逐字符删除和追加要快得多。查看Classes.pas中的GetDelimitedText代码,我明白了原因。我想指针在字符串中行进真的更快!您应该设置“SL.StrictDelimiter:=true;“要使其正常工作,否则Chr(1)…也将被用作分隔符。谢谢,Gerry。这比我使用StringBuilder进行的逐字符删除和追加要快得多。查看Classes.pas中的GetDelimitedText代码,我明白了原因。我想指针在字符串中移动确实更快!