博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分割字符串 ExtractStrings
阅读量:4357 次
发布时间:2019-06-07

本文共 1347 字,大约阅读时间需要 4 分钟。

//分割字符串 ExtractStrings

var
  s: String;
  List: TStringList;
begin
  s := 'about: #delphi; #pascal, programming';
  List := TStringList.Create;
  ExtractStrings([';',',',':'],['#',' '],PChar(s),List);
  //第一个参数是分隔符; 第二个参数是开头被忽略的字符
  ShowMessage(List.Text);  //about
                           //delphi
                           //pascal
                           //programming
  List.Free;
end;

 

修改源码中的一行,可以处理"5,,1,2,3,湖北省-荆州市-荆州荆中路"连续分隔符的情况。

  if (Head <> Tail) and (Head^ <> #0) then改成  if  (Head^ <> #0) then即可。

 

另外一个分隔字符串过程(由IdGlobal原来过程修改而成)

procedure SplitDelimitedString(const AData: string; AStrings: TStrings; const ADelim: string = ' ');

var
i: Integer;
LData: string;
LDelim: Integer; //delim len
LLeft: string;
LLastPos, LLeadingSpaceCnt: PtrInt;
begin
Assert(Assigned(AStrings));
AStrings.Clear;
LDelim := Length(ADelim);
LLastPos := 1;

LData := AData;

if LData = '' then begin //if WhiteStr
Exit;
end;
LLeadingSpaceCnt := 0;
while AData[LLeadingSpaceCnt + 1] <= #32 do begin
Inc(LLeadingSpaceCnt);
end;
i := Pos(ADelim, LData);
while I > 0 do begin
LLeft := Copy(LData, LLastPos, I - LLastPos); //'abc d' len:=i(=4)-1 {Do not Localize}
AStrings.Add(Trim(LLeft));
LLastPos := I + LDelim; //first char after Delim
i := PosIdx(ADelim, LData, LLastPos);
end;//while found
if LLastPos <= Length(LData) then begin
AStrings.Add(Trim(Copy(LData, LLastPos, MaxInt)));
end;
end;

 

转载于:https://www.cnblogs.com/prtmon/archive/2013/03/07/2948162.html

你可能感兴趣的文章
计算两个日期之间的天数
查看>>
Android关于buildToolVersion与CompileSdkVersion的区别
查看>>
袋鼠云日志,日志分析没那么容易
查看>>
缓存穿透 缓存雪崩 缓存并发
查看>>
了解你的Linux系统:必须掌握的20个命令
查看>>
js setInterval 启用&停止
查看>>
knockoutJS学习笔记04:监控属性
查看>>
Linux下启动/关闭Oracle
查看>>
session和cookie的区别
查看>>
oracle 数据库、实例、服务名、SID
查看>>
web.xml文件的作用
查看>>
linux下oracle调试小知识
查看>>
alert弹出窗口,点击确认后关闭页面
查看>>
oracle问题之数据库恢复(三)
查看>>
单点登陆(SSO)
查看>>
HR,也确实“尽职尽责”
查看>>
MaxComputer 使用客户端配置
查看>>
20190823 顺其自然
查看>>
阅读《余生有你,人间值得》有感
查看>>
每日英语
查看>>