Object Pascal中,有没有根据分隔符将一串字符串转换成字符串数组返回的函数?

解决方案 »

  1.   

    const
    TestStr = ’刘强>男>27>未婚>北京朝阳区‘;//加在USE 和TYPE中间procedure SeparateTerms(s : string;Separator : char;Terms : TStringList);
    { This browses a string and divide it into terms whenever the given
      separator is found. The separators will be removed }
      var
      hs : string;
      p : integer;begin
      Terms.Clear; // First remove all remaining terms
      if Length(s)=0 then   // Nothin' to separate
        Exit;
      p:=Pos(Separator,s);
      while P<>0 do
      begin
        hs:=Copy(s,1,p-1);   // Copy term
        Terms.Add(hs);       // Add to list
        Delete(s,1,p);       // Remove term and separator
        p:=Pos(Separator,s); // Search next separator
      end;
      if Length(s)>0 then
        Terms.Add(s);        // Add remaining term
    end;==========
    = 用  法 
    ==========
    //加一个按钮,在ONCLICK中写:
    var
    Terms : TStringList;
    i : integer;begin
      Terms:=TStringList.Create;
      SeparateTerms(TestStr,'>',Terms);
      for i:=0 to terms.Count-1 do
        ShowMessage(Terms.Strings[i]);//这里你把它分别保存在数组中就行了:)
      Terms.Free;
    end;
      

  2.   

    var
      i,j:integer;
      str:array[0..10]of string;
    begin
      for j:=0 to 10 do
        begin
          i:=pos('分割符',s);
          if i>0 then
            begin
              x:=trim(copy(s,1,i-1));
              s:=trim(copy(s,i+2,length(s)));
              str[j]:=x;
            end
          else
            begin
              str[j]:=s;
              break;
            end;
        end;
    end;
      

  3.   

    var
      slTemp : TStringList;
      i :Integer;
    begin
      slTemp := TStringList.Create;
      slTemp.Delimiter := '分隔符';
      for i:=0 to slTemp.count-1 do
      begin
        showmessage(slTemp[i]);
      end;
    end;
      

  4.   

    var
      s: string;
      ss: Tstrings;
      s := '刘强>男>27>未婚>北京朝阳区';
      s := stringreplace(s,'>',#13,[rfReplaceAll]);
      ss := TStringList.Create;
      ss.Text := s;
      showmessage(ss[0]);
      ss.Free;