比如有这么一个字符串:
123456789    987654 55555其中分割这3段字符中的分割是由 空格 和 [TAB]制表符组成
可能是一个或连续的空格 
可能是一个或多个[TAB]符 
也有可能是空格和制表符号的混合 。
提问:如何写一函数替换其中一段字串。funchgStr(str1:string,str2:string,num:Integer):string
str1表示原串(如上面的123456789    987654 55555)
str2表示需要换的串(如:8888)
num表示要替换掉第几个串(如:2)
funchgStr('123456789    987654 55555','8888',2)应该返回为'123456789    8888 55555'

解决方案 »

  1.   

    你自己循环每个字符,判断是否为空格或者TAB键
      

  2.   

    在分割符是一个的情况下,可以用TStringList试试,它有两个属性,支持分割,查一下帮助
      

  3.   

    function funchgStr(str1:string;str2:string;num:Integer):string;
    var i,n,m:integer;
        temp,rs:string;
    begin
      temp:=str1;
      for i:=1 to num-1 do
        begin
          n:=pos(' ',temp);
          temp:=trim(Copy(temp,n,length(temp)-n));
        end;
      m:=pos(' ',temp);
      rs:=copy(temp,1,m-1);
      Result:=StringReplace(str1,rs,str2,[]);
    end;
      

  4.   

    达不到效果 不见得是空格 有可能是1个或多个 [tab]符 也有可能是 空格和[tab]的混合。
    测试不通过
      

  5.   

    不过看你的代码,我知道怎么搞了。
     temp:=StringReplace(str1,#9,' ',[rfReplaceAll]);
      for i:=1 to num-1 do
        begin
          n:=pos(' ',temp);
          temp:=trim(Copy(temp,n,length(temp)-n+1));
        end;
      m:=pos(' ',temp);
      rs:=copy(temp,1,m-1);
      Result:=StringReplace(str1,rs,str2,[rfReplaceAll]);
    考虑到多个[tab]符 先把所有的[tab]改成空格----[tab]就是 #9
    然后替换 不过循环中的长度要+1你计算错啦  呵呵谢谢楼上的