如何更换无限循环?

0 c# string replace infinite-loop

我正在研究一些非常低效的C#代码,它们想要删除空白行.它这样做:

            string b;
 ... 
            while ( b.IndexOf("\n\n") >= 0 )
                b = b.Replace ("\n\n", "\n");

单个替换不能处理(例如)输入中的\n \n \n,因此需要循环.我认为它应该起作用,而且通常会起作用.

但有时它设法进入无限循环,我不明白如何.在每次迭代时,\n的数量应该减少,因此它应该最终终止.

有任何想法吗?

not*_*oop 6

这会工作:

String c = Regex.Replace(b, "\n\n+", "\n");
Run Code Online (Sandbox Code Playgroud)

  • 所以我们现在已经接受了答案,但仍然没有解释最初问题的原因...... (3认同)

Ada*_*son 6

我对你无法解释的无限循环没有解释(你是否认为它是无限的?你检查过它是否会改变?),但你可以用正则表达式更容易,更快地完成这个任务:

b = System.Text.RegularExpressions.Regex.Replace(b, "\n+", "\n")
Run Code Online (Sandbox Code Playgroud)