在大小写转换中插入空格
目标是将“ThisStringHasNoSpacesButItDoesHaveCapitals”之类的字符串转换为“This String Has No Spaces But It does”拥有大写字母”,在大写字母前面引入空格
正则表达式方法
正则表达式确实可以用于此目的。正则表达式“[A-Z]”识别大写字母,“$0”在每个匹配之前添加一个空格:
System.Text.RegularExpressions.Regex.Replace(value, "[A-Z]", " <pre class="brush:php;toolbar:false">string AddSpacesToSentence(string text, bool preserveAcronyms) { if (string.IsNullOrWhiteSpace(text)) return string.Empty; StringBuilder newText = new StringBuilder(text.Length * 2); newText.Append(text[0]); for (int i = 1; i < text.Length; i++) { if (char.IsUpper(text[i])) if ((text[i - 1] != ' ' && !char.IsUpper(text[i - 1])) || (preserveAcronyms && char.IsUpper(text[i - 1]) && i < text.Length - 1 && !char.IsUpper(text[i + 1]))) newText.Append(' '); newText.Append(text[i]); } return newText.ToString(); }
但是,正则表达式的计算成本很高,并且对于复杂模式来说可读性较差。
迭代方法
另一种方法是迭代字符串逐个字符:
此函数检查小写字符到大写字符之间的转换,并可选择处理首字母缩略词。
性能比较
性能-明智的是,迭代方法显着优于正则表达式方法,表明执行时间减少了 92.4%包含 1,000 个连续大写字母的字符串。它以代码简单性换取速度。
最终,这些方法之间的选择取决于每个项目的具体性能和可读性要求。
以上是如何高效地在字符串中的大写字母前插入空格?的详细内容。更多信息请关注PHP中文网其他相关文章!