用多个替换多个空格的正则表达式

时间:2017-11-09 12:16:45

标签: c# regex

我已经看到用单个空格/  替换空格的多个示例,但是我想要替换具有两个或更多空格且等于 

的每个空格
Regex.Replace(theString, @"[\s+]{2,}", " ");

此替换有效,但如果它是两个空格,则会插入一个 ,我理解。

如果计数超过两个,如何将其替换为两个 或更多?

字符串:

This text   contains    multiple whitespaces

通缉结果: This text   contains   multiple whitespaces

这是否可以使用Regex.Replace或我是否需要循环每个空格并替换它?

1 个答案:

答案 0 :(得分:2)

使用匹配评估程序构建自定义替换:

var s = " 1  2   3    4 ";
var result = Regex.Replace(s, @"\s{2,}", m =>
    string.Concat(Enumerable.Repeat(" ", m.Length)));
Console.WriteLine(result);
// => ' 1  2   3    4 '

请参阅C# demo

此处,\s{2,}匹配2个或更多个空格,匹配在匹配评估程序中分配给mstring.Concat(Enumerable.Repeat(" ", m.Length))构建一个由 子串组成的字符串匹配长度时间(见this thread)。