如何将一文本里的内容,里第一个连续空格改为一个空格,后面的空格改为逗号?
------------------文本内容-------------------------------
AAAAAA      B2 B4 B5 B8 B11
CCCCC  B12 B14 B16 B17
XXXX E10 E15 ------------------要修改文本为---------------------
AAAAAA B2,B4,B5,B8,B11
CCCCC B12,B14,B16,B17
XXXX E10,E15 //----------------代码--------------------------
procedure TTestForm.Button1Click(Sender: TObject);
var
    ss:TStringList;
    s:string;
    p,i,j:Integer;
    str1,str2:string;
    
begin
    ss:=Tstringlist.create;
    //ss.text:='AAAAAA      B2 B4 B5 B8 B11 ';
    ss.LoadFromFile(Edit1.Text);
    
    for i:=0 to ss.Count-1 do
    begin
        if ss.Count > StringGrid1.RowCount then 
            StringGrid1.RowCount:=StringGrid1.RowCount+1; //加行
        
       //要修改的参考代码    
       { for j:=0 to ss. -1 do
        begin
          s:=ss[j];
          p:=pos(' ',s);
          str1:=copy(s,1,p-1);
          str2:=copy(s,p+1,length(s));
        end; }          
        
        stringgrid1.Rows[i+1]:=bb;
    end;
        
    ShowMessage(str1);
    ShowMessage(str2);
    exit;
end;

解决方案 »

  1.   


    //把单行文本的处理写成下面这个函数
    function LineProcess(S: String): String;
    var
      i, j, k: Integer;
    begin
      i := 1;
      while (i < Length(S)) and (S[i] <> ' ') do inc(i);
      j := i + 1;
      while (j < Length(S)) and (S[j] = ' ') do inc(j);
      for k := j + 1 to Length(S) do
        if S[k] = ' ' then S[k] := ',';
      Result := Copy(S, 1, i) + Copy(S, j, Length(S) - j + 1);
    end;//调用的例子:
      ShowMessage (LineProcess('AAAAAA      B2 B4 B5 B8 B11'));
      

  2.   

    AAAAAA      
    后面..呵呵
      

  3.   

    Samplevar AStr,AStr1,AStr2,Res: string;AStr := 'AAAAAA      B2 B4 B5 B8 B11';
    AStr1 := copy(AStr,1,pos(' ',AStr));
    AStr2 := copy(AStr,pos(' ',AStr)+1,length(AStr)-length(AStr1));
    AStr2 := trim(AStr2);
    AStr2 := StringReplace(AStr2 , ' ', ',', [rfReplaceAll]);
    Res := AStr1 + AStr2;