有一字符串 'a1|a2|a3|a4' 怎样分别取得a1,a2等?

解决方案 »

  1.   

    function tform1.getstr(s:string;n:integer):string;
    var i,k:integer;s1:string;
    begin
     for i:=1 to n do
       begin
       k:=pos('|',s);
       s1:=copy(s,1,k-1);
       delete(s,1,k);
       end;
    result:=s1;
    end;
      

  2.   

    function tform1.getstr(s:string;n:integer):string;
    var i,k:integer;s1:string;
    begin
     for i:=1 to length(s) do
       begin
       k:=pos('|',s);
       s1:=copy(s,k,2);
       
       end;
    result:=s1;
    end;
      

  3.   

    还没解决啊
    'a1|a2|a3|a4|...a15|' 这样呢?
      

  4.   

    灵活运用Copy,Delete,Pos语句了
      

  5.   

    分割字符串    
        
    typeTResultArray = array of string;function SplitString(const source, ch: string): TResultArray;vartemp: string;i: integer;begintemp := source;i := pos(ch, source);while i <> 0 dobeginSetLength(Result, Length(Result) + 1);Result[Length(Result) - 1] := copy(temp, 0, i - 1);delete(temp, 1, i);i := pos(ch, temp);end;SetLength(Result, Length(Result) + 1);Result[Length(Result)-1] := Temp;end;**************function SplitString(const source,ch:string):tstringlist;vartemp:string;i:integer;beginresult:=tstringlist.Create;temp:=source;i:=pos(ch,source);while i<>0 dobeginresult.Add(copy(temp,0,i-1));delete(temp,1,i);i:=pos(ch,temp);end;result.Add(temp);end;调用:s:=splitstring('afsdfsdaaa|bbfdsfsdb|ccc','|');for i:=0 to s.Count-1 dob:=b+s.Strings[i]+#13;showmessage(b);s.free;
     
     
      

  6.   

    function TForm1.SplitString(const source,ch:string):tstringlist;
    var
      temp:string;
      i:integer;
    begin
      result:=tstringlist.Create;
      temp:=source;
      i:=pos(ch,source);
      while i<>0 do
        begin
          result.Add(copy(temp,0,i-1));
          delete(temp,1,i);
          i:=pos(ch,temp);
        end;
        result.Add(temp);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      s:Tstrings;
      i:integer;
      b:string;
    begin
      s := Tstrings.Create;
      s:=splitstring('afsdfsdaaa|bbfdsfsdb|ccc||dddd','|');
      for i:=0 to s.Count-1 do
      b:=b+s.Strings[i]+#13;
      showmessage(b);
      s.free;
    end;上面自定义函数,下面是测试,应该能满足你的要求
      

  7.   

    看了这么多,还不如这样简单,保准不会错,再多的都可以取
    procedure SpliteStr;
    var
      str1: string;
      SL: TStringlist;
    begin
      str1 := 'a1|a2|a3|a4';
      SL := TStringlist.Create;
      try
        SL.text := StringReplace(str1, '|', #13,[rfReplaceAll, rfIgnoreCase]);
        ShowMessage('a1=' + SL[0]);
        ShowMessage('a2=' + SL[1]);
      finally
      end;
    end;