大家都知道,在ASP中,用split函数可以把一个字符串分成数组,如:
dim stra,strb
stra="abce|cdef|er"
strb=split(stra)response.write(strb(0))    'abce
response.write(strb(1))    'cdef
response.write(strb(2))    'er好了,现在我写了一个delphi组件,需要在delphi中实现这个功能,请问delphi中是否有相应的函数以实现类似的功能?谢谢帮助,我是新手,分不多,谁帮我解决我只能给20分。

解决方案 »

  1.   

    没有这样的函数。
    可以自己写吧。pos。copy结合。
      

  2.   

    对,同意ChinaOk(授人以鱼,不如授人以渔)
      

  3.   

    自己写吧,下面的是别人写的
    用这三个函数搭配可以分割字符串//去掉多余的分割符,规范字符串
    Function RegulateStr(aString:String;Sepchar:String):String;
    var
    i,Num:Integer;
    Flag:Boolean;
    MyStr,TempStr:String;
    begin
      Flag:=False;//进行标志,去除多余的分割符
      Num:=Length(aString);//计算aString串的长度
      for i:=1 to Num do
          begin
            TempStr:=Copy(aString,i,1);//取aString串中的一字符
            if TempStr <> SepChar then
               begin
                 MyStr:=MyStr+TempStr;
                 Flag:=True;
               end
           else
               if(Flag=True)then
                  begin
                    Mystr:=Mystr+TempStr;
                    Flag:=False;
                  end;
          end;
       if  MyStr[Length(MyStr)] <> SepChar then
           MyStr:=MyStr+SepChar;
           RegulateStr:=MyStr;
    end;//得到字符串中一个子串
    Function GetSubStr(var aString:String;SepChar:String):String;
    var
    Mystr:String;
    StrLen:Integer;
    SepCharPos:Integer;
    begin
    StrLen:=Length(aString);
    SepCharPos:=Pos(SepChar,aString);//计算分割符在子串中的位置
    MyStr:=Copy(aString,1,SepCharPos-1); //将分割符前所有字符放到mystr串中
    Delete(aString,1,SepCharPos);//除去分割符和分割符前的子串
    GetSubStr:=MyStr;//返回一个字段
    end;//计算一个字符串要被分割成几个字段
    Function GetSubStrNum(aString:String;SepChar:String):Integer;
    var
    i:Integer;
    StrLen:Integer;
     Num:Integer;
    begin
      StrLen:=Length(aString);
      Num:=0;
      for i:=1 to StrLen do
          if Copy(aString,i,1)=SepChar then
             Num:=Num+1;
             result:=Num;
    end;
      

  4.   

    procedure SeparateTerms(s : string;Separator : char;Terms : TStringList);
      var
      hs : string;
      p : integer;begin
      Terms.Clear; // 清除所有的terms
      if Length(s)=0 then   // 如没有任何分隔字符存在就退出
        Exit;
      p:=Pos(Separator,s);
      while P<>0 do
      begin
        hs:=Copy(s,1,p-1);   // 复制 term
        Terms.Add(hs);       // 加入 term
        Delete(s,1,p);       // 清除分隔符
        p:=Pos(Separator,s); // 寻找下一个分隔符
      end;
      if Length(s)>0 then
        Terms.Add(s);        // 结尾剩余字符加入 term
    end;
    //使用办法var
    Terms : TStringList;begin
      
      Terms:=TStringList.Create;
      str1='TEST|44.5|4'
      SeparateTerms(str1,'|',Terms);
      Terms.Free;
    end;