CString替换多个Whitespace MFC

时间:2014-03-13 14:34:58

标签: c++ cstring

我的MFC应用程序中有一个带有单个/多个空格的CStrings。我必须用单个下划线替换它们。 示例:sampleString =

"A B  C D   E" --> "A_B_C_D_E"

但是当我使用sampleString.Replace("",' _')时,每个空格都会出现下划线,即

"A_B__C_D___E".

我编写了一段代码,但并不喜欢它,也是错误的。

                int i=0,pos=0,lastSpacePos=sampleString.GetLength();
                while(i<sampleString.GetLength())
                {
                    pos=sampleString.Find(" ",i);
                    if(pos!=-1)
                    {
                        if(lastSpacePos!=(pos-1))
                        {
                            sampleString.Delete(pos,1);
                            sampleString.Insert(pos,"_");
                        }                        
                        lastSpacePos=pos;
                        i=pos+1;
                    }
                    else
                        i++;
                }
                sampleString.Remove(' ');

我缺少哪种更简单的方法?

1 个答案:

答案 0 :(得分:5)

Replace返回要替换的字符数,这样您就可以尝试用一个空格替换两个空格,直到找不到更多的空格对:

while(sampleString.Replace("  "," "));

然后用下划线替换一个空格:

sampleString.Replace(" ",'_');