用C#中的Regex替换两个或多个空格

时间:2011-02-22 21:36:21

标签: c# asp.net html regex

我对Regex的东西太可怕了。我想在C#中使用正则表达式将任意两个或更多空格转换为不间断空格。我想单独留下单个空格。

Sample     Sample

会产生

Sample     Sample

但是

Sample Sample

不会受到影响。

有什么想法吗?

提前致谢。

2 个答案:

答案 0 :(得分:7)

您可以使用MatchEvaluator作为替换参数。在C#3.0或更新版本中,您可以使用lambda函数:

s = Regex.Replace(s, " {2,}", x => x.Value.Replace(" ", " "));

答案 1 :(得分:3)

它基于零宽度正向前瞻和后观断言。

MSDN

var rx = new Regex(" (?= )|(?<= ) ");

var str = "ab   cde f";
var res = rx.Replace(str, "&nbsp;");

// res == ab&nbsp;&nbsp;&nbsp;cde f