首页 > 后端开发 > C++ > 如何高效地在字符串中的大写字母前插入空格?

如何高效地在字符串中的大写字母前插入空格?

Linda Hamilton
发布: 2024-12-29 21:21:15
原创
809 人浏览过

How to Efficiently Insert Spaces Before Uppercase Letters in a String?

在大小写转换中插入空格

目标是将“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中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板