delphi string.split 按照任意字符串分割语句

时间:2022-12-11 14:48:16

delphi string.split 按照任意字符串分割语句

1、就是把一个指定的字符串用指定的分割符号分割成多个子串,放入一个 TStringList 中
function ExtractStrings(Separators, WhiteSpace: TSysCharSet;
Content: PChar;
 Strings: TStrings): Integer;
比如要把 'abc,defg,hijkl';
按照逗号','分割开:
var
 Res: TStringList;
 Count: Integer;
begin
 s
:= 'abc,defg,hijkl';
 Res := TStringList.Create;
 Count := ExtractStrings([','], [],
PChar(s), Res);
 ShowMessage('共分割出 ' + IntToStr(Count) + ' 个子串');

 ShowMessage(Res.Text);
 Res.Free;
end;

2、Split函数(自建)

var
  I: Integer;
  S: string;
  A: TArray<string>;
begin
  S := 'AAA分割bbb分割ccc';
  A := S.Split(['分割']);
  for I := 0 to High(A) do
    ShowMessage(A[I]);
end;

输出结果为:

AAA

BBB

CCC

var

str: string;
  arr: TArray<string>;
begin
  str := 'A-1,B-2,,,C-3,D-4';

arr := str.Split([',']);                                   // arr[0] = A-1; Length(arr) = 6
  arr := str.Split([','], TStringSplitOptions.ExcludeEmpty); // 忽略空项; Length(arr) = 4
  arr := str.Split([','], 2);                                // 只提取前 2

arr := str.Split([',', '-'], ExcludeEmpty); //arr[0] = A; Length(arr) = 8

arr := str.Split([',,,'], None);            // 分隔符可以是一个字符串数组
end;