请教一个问题:
delphi中有没有分离字符串的函数? 比如说有一个字符串中有一些由逗号分开的词语,怎样把他们分开?谢谢

解决方案 »

  1.   

    呵呵,你用POS、DELETE、COPY等几个字符串处理函数联合使用,就可以达到目的了。
      

  2.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
     edit1.Text:='test, for 花好月圆';
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
    i,j:integer;
    begin
    label1.Caption :='';
    j:=Length(edit1.Text );
    for i:=0 to j do
    begin
    if not ((edit1.Text[i]) in [',']) then
    label1.Caption :=label1.Caption +edit1.Text[i];
    end;
    end;
      

  3.   

    我觉得这样最简单:
    var
            sl: TStringList;
            i : Integer;
    begin
            sl :=  TStringList.Create;
            sl.Delimiter :=',';
            sl.DelimitedText := 'sgdfg,dfgdfg,dfgdfg,dfgdfgdf';
            for i :=0 to sl.Count -1 do
                    ShowMessage(sl.Strings[i]);
            sl.Free;
    end;
      

  4.   

    回复人: arhatcsdn(问题先生) ( ) 信誉:91  2004-11-26 20:12:00  得分: 0  
     
     
       小弟太菜了,能举个例子么?如果不知道有几个逗号怎么半?
      
     
    >>>我晕,运行上面的代码试试啦~~~ edit1.Text:='test, for 花,好月,圆';得到的结果:
    test for 花好月圆
      

  5.   

    procedure TForm1.Button2Click(Sender: TObject);
    var
    i,j:integer;
    begin
    label1.Caption :='';
    j:=Length(edit1.Text );
    for i:=0 to j do
    begin
    if not ((edit1.Text[i]) in [',']) then
    label1.Caption :=label1.Caption +edit1.Text[i];
    end;
    end;你可以再优化、修改
      

  6.   


    edit1:='test, for 花,好月,圆';ExtractStrings([','],[],pchar(str),memo1.lines);你要的东东给你一行一行放在memo里了。
      

  7.   

    function DivString(Str: string; DivChar: TChar): TStrings;
    var
      tempS: string;
      i: Integer;
    begin
      Result := TStringList.Create;
      tempS := '';
      for i := 1 to Length(Str) do
        if Str[i] = DivChar then
        begin
          Result.Add(tempS);
          tempS := '';
        end
        else tempS := tempS + Str[i];
      if tempS <> '' then Result.Add(tempS);
    end;
      

  8.   

    function DivString(Str: string; DivChars: array of Char): TStrings;
    var
      tempS: string;
      i: Integer;
      function CharExists(xChar: Char; Chars: array of Char): Boolean;
      var
        i: Integer;
      begin
        Result := False;
        for i := Low(Chars) to High(Chars) do
          if xChar = Chars[i] then Result := True;
      end;
    begin
      Result := TStringList.Create;
      tempS := '';
      for i := 1 to Length(Str) do
        if CharExists(Str[i], DivChars) then
        begin
          Result.Add(tempS);
          tempS := '';
        end
        else tempS := tempS + Str[i];
      if tempS <> '' then Result.Add(tempS);
    end;//example:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Chars: array[1..3] of Char;
    begin
      Chars[1] := ',';
      Chars[2] := '.';
      Chars[3] := ';';
      Edit1.Text := 'test1,test2.test3;test4';
      Memo1.Lines.Clear;
      Memo1.Lines := DivString(Edit1.Text, Chars);
    end;
      

  9.   

    楼上的兄弟:
    TStrings有个属性叫CommaText专门用来处理逗号分隔的串的,默认分隔符是逗号,转义字符是双引号,用另外一个属性叫DelimitedText,可以设置分隔符和转义字符。
    有现成的,干嘛不用?BTW:用TStrings做返回值类型其实很不好,因为要考虑释放的问题,很容易内存泄漏。
      

  10.   

    我不知道有个CommaText,所以没用^_^
    CommaText好像也不能同时处理多个分隔符的情况
      

  11.   

    jackie168(花好月圓)的朋友说的很好啊
    他说的问题真的是很浅显易懂
    我想这样的回答才是最好的