有这样一个字符串:" 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 "多谢 多谢
空格作为单词的分隔符,分隔出来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 "多谢 多谢
"bbc"替换成"1"
"ab"替换成"22"
"-TEMP-"替换成"aabbcc"
如果遇到1 2 -TEMP这些可能就不行了, 我有1计遍历字符串1遍, 将abc出现的地方保存在数组int a[100]中, 记录的是abc出现的起始位置, 他的长度是固定的, 同样bbc 和 ab分别保存在 b[100]和c[100]中, 然后对那个字符串对应的地方赋对应的值就可以了
" bbc "替换成" 1 "
" ab "替换成" 22 "
可以将所有的要替换的字符都用同样长度的字符串代替,同时记下这个位置的标号,如将"abc"换成"aabbcc"时,将"abc"换成" ",记下位置标号。
其他的依次照办。
然后根据不同的字符串,将空格依次用字符串代替。其他字符也如此。
当然,定位函数要自己写。
不过7楼的同学的是想法有点麻烦.昨天我想出了一个方法.先建一个缓冲区.然后遍历原字符串,如果是特殊字符,则直接拷贝下来,如果遇到单词,则使用strtok将其分离出来,判断其是否需要替换,如果需要替换,则将替换后的拷贝下来,如果不需要替换,则将原字符串拷贝下来.O了