经过大量测量后,我在我们的一项 Windows 服务中发现了一个我想要优化的热点。我们正在处理可能包含多个连续空格的字符串,并且我们希望减少到仅单个空格。我们使用静态编译的正则表达式来完成此任务:
private static readonly Regex
regex_select_all_multiple_whitespace_chars =
new Regex(@"\s+",RegexOptions.Compiled);
然后按如下方式使用它:
var cleanString=
regex_select_all_multiple_whitespace_chars.Replace(dirtyString.Trim(), " ");
该行已被调用数百万次,并且被证明是相当密集的。我试图写出更好的东西,但我被难住了。考虑到正则表达式相当适度的处理要求,肯定有更快的东西。可以unsafe
使用指针处理可以进一步加快速度吗?
Edit:
感谢您对这个问题的一系列令人惊奇的回答......最出乎意料的是!
这大约快了三倍:
private static string RemoveDuplicateSpaces(string text) {
StringBuilder b = new StringBuilder(text.Length);
bool space = false;
foreach (char c in text) {
if (c == ' ') {
if (!space) b.Append(c);
space = true;
} else {
b.Append(c);
space = false;
}
}
return b.ToString();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)