比如
Str:='12,34,56,7,8,90';
用','作为分隔符,怎么提取出来呢?或者Str:='12,34,56,7.8.90';
如果有',''.'两种分隔符号又怎么分离呢?谢谢

解决方案 »

  1.   

    function take(str:string):string;
    var
    t:set of char;
    len,i:integer;
    c:char;
    s:string;
    begin
      t:=[',','.'];
      s:='';
      len:=length(str);
      for i:= 1 to len do
       begin
         c:=copy(s,i,1);
         if not c in s then
           s:=s+c;
         i:=i+1;   
       end;
      take:=s;
    end;
      

  2.   

    //将以“,”为为分隔符的字符串分离开来,返回原字符串str中第i个子字符串
    function getString(i:integer;Str:string):string;
    var 
      lst:Tstringlist; 
    begin
       lst:=tstringlist.Create;
       lst.Delimiter:=',';
       lst.DelimitedText:=Str ;
       Result:=lst.strings[i-1];
    end;
      

  3.   

    str:=array[0..3]of string;
    str1:='12,34,56,7,8,90';
    Position:integer;
    for i;=0 to 4do
    begin
      Position:=Pos(str,',');
      str[1]:=copy(str,1,Position-1);
      str1:=delete(str,1,position)
    end;
      

  4.   

    我来做个总结吧:
    如果都是相同的分隔符就用TStringList来分开离,方法简单快捷(在下经常使用)。
    如果是不同的分隔就要写自定义函数来分离,具体咋写就看楼上各位的方法就OK了。
      

  5.   

    function take(str:string):string;
    var
    t:set of char;
    len,i:integer;
    c:char;
    s:string;
    begin
      t:=[',','.'];
      s:='';
      len:=length(str);
      for i:= 1 to len do
       begin
         c:=copy(str,i,1);
         if not c in t then
           s:=s+c;
         i:=i+1;   
       end;
      take:=s;
    end;