比如:abc,yy,我们,tot
一个字符串用逗号分开各项,但有几项是不固定的
要求把各项取出分别放到字符串里,比如上面:
str1:='abc';
str2:='yy';
str3:='我们';
str4:='tot';
当然str应该用动态数组,因为不知有几项,怎么写?

解决方案 »

  1.   

    有一个比较笨的办法,把每一个字符取出来看看是不是逗号,如果是的话把它放到str(i+1)里面,如果不上就还是放在stri里面
      

  2.   

    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;
      

  3.   

    取出来很简单,用POS查询出,所处的位置,然后用Copy就可以了。对于动态数组,可以考虑用TStringlist,很方便的
      

  4.   

    通过“,”把这个字符串分开就可以了。
    b1:='abc,yy,我们,tot';
    separateTerms(b1,',',Terms1);
    terms1.count=4;
    c1:=terms1.string[0];//abc
    c2:=terms1.string[1];//yy
    c3:=terms1.string[2];//我们
    c4:=terms1.string[3];//tot
      

  5.   

    我常用這個函數TSplitArray = array of String;
    {
    var aSplit: TSplitArray;
    begin
      aSplit:=split('a,b,c,d,e,f',',');
    }
    function Split(const Source, Delimiter: String):TSplitArray;
    var
        iCount: Integer;
        iPos: Integer;
        iLength: Integer;
        sTemp: String;
        aSplit: TSplitArray;
    begin
        sTemp := Source;
        iCount := 0;
        iLength := Length(Delimiter) - 1;
        repeat
          iPos := Pos(Delimiter, sTemp);
          if iPos = 0 then
            break
          else begin
            Inc(iCount);
            SetLength(aSplit, iCount);
            aSplit[iCount - 1] := Copy(sTemp, 1, iPos - 1);
            Delete(sTemp, 1, iPos + iLength);
          end;
        until False;
        if Length(sTemp) > 0 then begin
          Inc(iCount);
          SetLength(aSplit, iCount);
          aSplit[iCount - 1] := sTemp;
        end;
        Result := aSplit;
    end;
      

  6.   

    强烈建议使用TStrings(或TStringList)类解决该问题。
      

  7.   

    同意 Blakhawk(黑鹰船长) 
    注意TStringList有Delimiter和DelimitedText属性
      

  8.   

    repeat
        a[I]:=copy(string,1,pos(',',string));
        string:=a[I];
        inc(I);
    until not pos(',',sting);