如何在大写字母前添加空格?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (370)

给定字符串“ThisStringHasNoSpacesButItDoesHaveCapitals”,在大写字母之前添加空格的最佳方法是什么?

这是在RegEx上的尝试

System.Text.RegularExpressions.Regex.Replace(value, "[A-Z]", " $0")
提问于
用户回答回答于

可以使用这个:

" This String..." instead of "This String..."

在中间插入空格:

newValue = Regex.Replace(value, "([a-z])([A-Z])", "$1 $2");
用户回答回答于

可以尝试下 regexes 函数

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();
}

扫码关注云+社区

领取腾讯云代金券