有这样一个字符串:"  abc  bbc  111 ab  abc bbc    111   ab  "
空格作为单词的分隔符,分隔出来abc   bcc  111  ab
然后按下面的规则替换.
将其中的
"abc"替换成"aabbcc"
"bbc"替换成"1"
"ab"替换成"22"直接用CString的replace不行,因为第一次替换abc后,字符串变成了"  aabbcc  bbc  111 ab  aabbcc bbc    111   ab  "
再使用replace替换bbc的时候,aabbcc中的bbc也会被替换了.哪位大侠有没有什么好的方法来实现.
小弟在这里多谢了.如果上面的字符串成功了,请再试一下:
"  bbc  abc  111 ab  bbc abc    111   ab  "多谢 多谢

解决方案 »

  1.   

    "abc"替换成"-TEMP-"  
    "bbc"替换成"1"
    "ab"替换成"22"
    "-TEMP-"替换成"aabbcc"
     
      

  2.   


    如果遇到1 2 -TEMP这些可能就不行了, 我有1计遍历字符串1遍, 将abc出现的地方保存在数组int a[100]中, 记录的是abc出现的起始位置, 他的长度是固定的, 同样bbc 和 ab分别保存在 b[100]和c[100]中, 然后对那个字符串对应的地方赋对应的值就可以了
      

  3.   

    前后都加上空格" abc "替换成" aabbcc "
    " bbc "替换成" 1 "
    " ab "替换成" 22 "
      

  4.   

    可以尝试着将所有的要被替换的字符排一个优先级,因为如abc与ab有相同的前缀,排好处理顺序后再操作
    可以将所有的要替换的字符都用同样长度的字符串代替,同时记下这个位置的标号,如将"abc"换成"aabbcc"时,将"abc"换成"     ",记下位置标号。
    其他的依次照办。
    然后根据不同的字符串,将空格依次用字符串代替。其他字符也如此。
    当然,定位函数要自己写。
      

  5.   

    多谢各位.
    不过7楼的同学的是想法有点麻烦.昨天我想出了一个方法.先建一个缓冲区.然后遍历原字符串,如果是特殊字符,则直接拷贝下来,如果遇到单词,则使用strtok将其分离出来,判断其是否需要替换,如果需要替换,则将替换后的拷贝下来,如果不需要替换,则将原字符串拷贝下来.O了