字符串处理问题,非常急!

时间:2023-01-03 04:19:21
把字符串  a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj
以','分隔符取出a  bb cc eeeee  af  adsfg ...放到数组里面
不知道用什么方法能快速的解决这个问题,
分隔符可以用','或者'|'、';'等等

9 个解决方案

#1


循环赋值,应该没什么好方法吧

#2


procedure TForm1.Button1Click(Sender: TObject);
var
  SL:TStringList;
begin
  SL:=TStringList.Create;
  with SL do
  begin
    DelimitedText:='a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
    Delimiter:=',';

    //这时SL[0]就是aa,SL[1]就是bbb,以此类推

    Free;
  end;
end;

#3


var
  s : string;
  i : integer;
  VstringL : strings;
begin
  s := 'a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
  vstringL := TStringList.create;
  while s<>'' do
  begin
    i := pos(',',s);
    vstringL.add(copy(s,1,i-1));
    delete(s,1,i);
  end;  
end;

#4


var
  s: string;
  i: integer;
  VstringL: array of string;
begin
  s := 'a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj,';
  i := 0;
  while pos(',', s) > 0 do begin
    setlength(VstringL, i + 1);
    VstringL[i] := copy(s, 1, pos(',', s) - 1);
    delete(s, 1, pos(',', s));
    inc(i);
  end;
  //for i := 0 to length(VstringL) - 1 do
  //  showmessage(VstringL[i]);
end;

#5


alexanda2000(Delphi2005,好用 ^_^)的方法棒极了

#6


zsjzwj(北极熊) 的方法把saj漏了
而且应该VstringL : tstringlist;
估计VstringL : strings;行不通

#7


DELPHI 当中最好用也是用得最为广泛的是TSTRINGS而不是C或C++当中的数组

可以将字符串拆分成TSTRINGS类型的函数

ExtractStrings

#8


唔,,不错,不错!

#9


我从来不敢用Copy和Delete的组合来分隔。

其实:

var
  SL:TStrings;
begin
  SL:=TStringList.Create;
  SL.CommaText:='a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
end;

其实CommaText就是逗号的,所以说,一句话就够了。

其实……,用DelimitText要比Copy+Delete函数要好。

其实Classes.pas里面的ExtractStrings就是个不错的函数,还可以同时弄很多分隔符,缺点是太通用,可能影响效率……

我都是自己写的函数,直接用指针……

唉…… 这年头的孩子,不仔细看源代码啊……

#1


循环赋值,应该没什么好方法吧

#2


procedure TForm1.Button1Click(Sender: TObject);
var
  SL:TStringList;
begin
  SL:=TStringList.Create;
  with SL do
  begin
    DelimitedText:='a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
    Delimiter:=',';

    //这时SL[0]就是aa,SL[1]就是bbb,以此类推

    Free;
  end;
end;

#3


var
  s : string;
  i : integer;
  VstringL : strings;
begin
  s := 'a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
  vstringL := TStringList.create;
  while s<>'' do
  begin
    i := pos(',',s);
    vstringL.add(copy(s,1,i-1));
    delete(s,1,i);
  end;  
end;

#4


var
  s: string;
  i: integer;
  VstringL: array of string;
begin
  s := 'a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj,';
  i := 0;
  while pos(',', s) > 0 do begin
    setlength(VstringL, i + 1);
    VstringL[i] := copy(s, 1, pos(',', s) - 1);
    delete(s, 1, pos(',', s));
    inc(i);
  end;
  //for i := 0 to length(VstringL) - 1 do
  //  showmessage(VstringL[i]);
end;

#5


alexanda2000(Delphi2005,好用 ^_^)的方法棒极了

#6


zsjzwj(北极熊) 的方法把saj漏了
而且应该VstringL : tstringlist;
估计VstringL : strings;行不通

#7


DELPHI 当中最好用也是用得最为广泛的是TSTRINGS而不是C或C++当中的数组

可以将字符串拆分成TSTRINGS类型的函数

ExtractStrings

#8


唔,,不错,不错!

#9


我从来不敢用Copy和Delete的组合来分隔。

其实:

var
  SL:TStrings;
begin
  SL:=TStringList.Create;
  SL.CommaText:='a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
end;

其实CommaText就是逗号的,所以说,一句话就够了。

其实……,用DelimitText要比Copy+Delete函数要好。

其实Classes.pas里面的ExtractStrings就是个不错的函数,还可以同时弄很多分隔符,缺点是太通用,可能影响效率……

我都是自己写的函数,直接用指针……

唉…… 这年头的孩子,不仔细看源代码啊……