lazarus/delphi的字符分割函数
很奇怪为什么Pascal里没有类似split的函数,当年看了半天手册找到一个变态的方法:
li := TStringList.Create;
li.Delimiter:=';'
li.DelimitedText:=Str;
今天发现这个方法也有问题,类似 '1111;2222; 3333 333;'的字符串会分割错,空格也被当成分割符。
实在没办法,按照C语言的方式写了个Split,如果谁知道Pascal里有原生态的字符分割函数,麻烦请告诉我
procedure Split(Str : String; li : TStrings);
var
PStr, LastP,P: PChar;
begin
PStr := PChar(Str);
LastP := PStr;
P := PStr;
while P^ <> chr(0) do
begin
if P^=';' then
begin
P^:=chr(0);
if LastP <> P then
li.Add(LastP);
LastP:=P+1;
P^:=';';
end;
Inc(P);
end;
if LastP <> p then
li.Add(LastP);
end;