我有一个字符串str := 'W GT, - Ws t,YU';我用Stringlist分隔strstrlist.Delimiter := ',';
strlist.CommaText := str;处理后,不但逗号的给分开了,空格也给分开了,我只要逗号分开就好,怎么搞现在结果:
W
GT
-Wt
t
YU我要的结果:
W GT
 -Ws t
YU

解决方案 »

  1.   

    不要太迷信现成的,与其费那么多的精力在Stringlist上,还不如自己做一下
    procedure TForm1.Button1Click(Sender: TObject);
    var
      str:string;
      i:integer;
    begin
      str := 'W GT, - Ws t,YU';
      i:=pos(',',str);
      while i>0 do begin
        memo1.Lines.Add(copy(str,1,i-1));
        delete(str,1,i);
        i:=pos(',',str);
      end;
      memo1.Lines.Add(str);
    end;
      

  2.   

    strlist.linebreak := ','; strlist.Text := str;
      

  3.   

      用StringReplace来分割字符,可以设置任意长度的字符当分隔符
      S := 'W GT, - Ws t,YU';
      ss := TStringList.Create;
      ss.Text := StringReplace(S, ',', #13#10, [rfReplaceAll]);
      SS[0]...
      SS[1]...
      ss.free;
      

  4.   

    二楼的
    strlist.linebreak
    没见过,我的Delphi7中也找不到,是新版本的吗?
      

  5.   

    str := '"W GT"," - Ws t",YU';
    XE2试过,D7没试过
      

  6.   

    delphi2010下可以设置StrictDelimiter属性为True。
    delphi7没有这个属性,自己写吧
      

  7.   


    procedure SplitStr(Str, Str_Div: string; var List: TStringList);
    var
      I : Integer;
      S: string;
    begin
      List.Clear;
      for I := 1 to Length(WideString(Str)) do
      begin
        if WideString(Str)[I] <> WideString(Str_Div) then
          S := S + WideString(Str)[I]
        else
        begin
          List.Append(S);
          S := '';
        end;
      end;
      List.Append(S);
    end;
    SplitStr(Str, #44, List);
      

  8.   

    自己写个吧,不费什么事的
    procedure SplitString(Source,Deli:string;var StrList:TStringList);
    var
      EndOfCurrentString:byte;
      str:string;
    begin
      if (Source='') or (Deli='') then
        Exit;
      StrList.Clear;
      EndOfCurrentString := Pos(Deli,Source);
      while EndOfCurrentString > 0 do
      begin
        str := Copy(Source,1,EndOfCurrentString-1);
        StrList.add(str);
        Delete(Source,1,EndOfCurrentString + Length(Deli) -1);
        EndOfCurrentString := Pos(Deli,Source);
      end;
      StrList.Add(source);
    end;
      

  9.   

    class procedure TFTStrFunc.StrToList(AStr: string; var AList: TStringList; const ASplit: string = ',');
    var
      i, Len: Integer;
      sTmp: string;
    begin
      AList.clear;
      AStr := AStr + ASplit;
      Len := Length(AStr);
      i := 1;
      sTmp := '';
      while (i <= Len) do
      begin
        if AStr[i] <> ASplit then
          sTmp := sTmp + AStr[i]
        else
        begin
          if sTmp <> '' then
            AList.Add(sTmp);
          sTmp := '';
        end;
        Inc(i);
      end;
      if (AList.Count = 0) and (AStr <> ASplit) then
        AList.Add(AStr);
    end;我写的这个函数,应该就可以解决 
      

  10.   

    利用 Delphi 自带的 ExtractStrings 函数即可解决:procedure TForm1.Button1Click(Sender: TObject);
    var
      sl: TStrings;
      i: integer;
    begin
      sl:= TStringList.Create;
      ExtractStrings([','],[' '],'W GT, - Ws t,YU',sl);
      for i := 0 to sl.Count - 1 do
      begin
       // 针对 sl.Strings[i] 做一些事
       // ......
       Memo1.Lines:=sl;
      end;
      sl.Free;
    end;
      

  11.   

    利用 Delphi 自带的 ExtractStrings 函数即可解决:procedure TForm1.Button1Click(Sender: TObject);
    var
      sl: TStrings;
      i: integer;
    begin
      sl:= TStringList.Create;
      ExtractStrings([','],[' '],'W GT, - Ws t,YU',sl);
      for i := 0 to sl.Count - 1 do
      begin
       // 针对 sl.Strings[i] 做一些事
       // ......
      end;
      Memo1.Lines:=sl;
      sl.Free;
    end;