delphi 字符串处理的问题——如何去掉空格86
    029
    85088019我想把它处理成 86-029-85088019这种形式。有好多这样的字符串而且之间的空格数目不确定 有的是8个空格 有的是10个等等。

解决方案 »

  1.   


    uses StrUtils;
    function SpaceProcess(S: String): String;
    var
      T : String;
    begin
      T := AnsiReplaceStr(S, '  ', ' ');
      while T <> S do
      begin
        S := T;
        T := AnsiReplaceStr(S, '  ', ' ');
      end;
      Result := AnsiReplaceStr(S, ' ', '-');
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      Showmessage(SpaceProcess('86         029        85088019'));
    end;
      

  2.   

    下面这个SpaceProcess2函数应该比上面的SpaceProcess效率高些:function SpaceProcess2(S: String): String;
    var
      i : Integer;
      b : Boolean;
    begin
      Result := '';
      b := False;
      for i := 1 to Length(S) do
      begin
        if S[i] <> ' ' then
        begin
          b := False;
          Result := Result + S[i];
        end
        else
          if not b then
          begin
            Result := Result + '-';
            b := True;
          end;
      end;
    end;
      

  3.   

    var
      S: string;
      i: Integer;
      slTmp: TStringList;
    begin
      S := ' 86  029 85088019';
      slTmp := TStringList.Create;
      slTmp.CommaText := StringReplace(S, ' ', ',', [rfReplaceAll]);
      for i := slTmp.Count - 1 downto 0 do
        if slTmp[i] = '' then slTmp.Delete(i);
      slTmp.Delimiter := '-';
      S := slTmp.DelimitedText;
      Text := S;
    end;
      

  4.   


    //Delphi为你准备的function CodeFormat(SpaceCode: string): string;
    begin
      with TStringList.Create do
      begin
        Delimiter := ' ';
        CommaText := SpaceCode;
        Delimiter := '-';
        Result := DelimitedText;
      end;
    end;ShowMessage(''''+CodeFormat(' 86  029 85088019  ')+'''');//'86-029-85088019'
      

  5.   

    //这样也行
    function CodeFormat(SpaceCode: string): string;
    begin
      with TStringList.Create do
      begin
        CommaText := SpaceCode;
        Delimiter := '-';
        Result := DelimitedText;
      end;
    end;