此代码段中发生了什么?
RegexOptions options = RegexOptions.None;
Regex regex = new Regex(@"[ ]{2,}", options);
string outStr = regex.Replace(inStr, @" ");
我正在寻找的是用一个空格替换任何“白色”空间序列(包括TAB,CR,LF)。
答案 0 :(得分:3)
让我们分解一下:
[ ] <-- matches a single space
{2,} <-- previous token is repeated 2 or more times
所以这将匹配2个或更多连续的空格。
然后是.Replace调用,这将用一个空格替换那些2个或更多空格的序列。
答案 1 :(得分:3)
[ ]
表示一个字符组(在这种情况下只有一个空格)
{2,}
表示“至少2次”
因此,此代码用一个
替换空格的多个出现更容易编写(和读取):" +"
(一个或多个空格)然后用一个替换它们(毕竟不应该慢)
答案 2 :(得分:2)
这一行:
Regex regex = new Regex(@"[ ]{2,}", options);
创建一个正则表达式对象,该对象将查找2个或更多相邻空格的出现次数。 [ ]
创建一个包含空格的字符组 - 它本来可以写成,但是我的猜测会不那么可读。
{2,}
表示前一个字符(或字符组)的2个或更多(无界)。
请参阅this方便的RegEx备忘单,了解.NET正则表达式语法。
此行找到所有此类事件并将其替换为一个空格:
string outStr = regex.Replace(inStr, @" ");
replace函数在第一个字符串参数中查找正则表达式的所有匹配项,并用第二个字符串替换它们。
在这两种情况下,都不需要逐字字符串文字(以@
开头)。
答案 3 :(得分:2)
@ - verbatim string literal;字符不会被解释,直到下一个引用
[] - 在此括号中我们指定是否允许使用whit字符。这个([])作者想要使用的任何空格只能替换空格,但为此应该使用pattern \ s
{2,} - 至少两次
可能这个正则表达式必须删除双重空格