如何在Java String中的每个大写字母前添加下划线?

时间:2009-10-19 21:00:23

标签: java string replace

我有一个像这样的字符串“HelloWorld MyNameIsKarl”,我希望它变成类似“Hello_World _My_Name_Is_Carl”的字样。我怎么能这样做?

3 个答案:

答案 0 :(得分:35)

是的,正则表达式可以为您做到这一点:

"HelloWorldMyNameIsCarl".replaceAll("(.)([A-Z])", "$1_$2")

表达式[A-Z]将匹配每个大写字母并将其放入第二组。您需要第一个组.以避免替换第一个“H”。

正如Piligrim所指出的,此解决方案不适用于任意语言。要捕获Unicode标准定义的任何大写字母,我们需要Unicode 4.1 subproperty \p{Lu}匹配所有大写字母。所以更通用的解决方案看起来像

"HelloWorldMyNameIsCarl".replaceAll("(.)(\\p{Lu})", "$1_$2")

感谢Piligrim。

答案 1 :(得分:3)

这是家庭作业吗?为了帮助您入门:

  1. 创建StringBuffer
  2. 迭代你的字符串。
  3. 检查每个字符是否为大写(java.lang.Character类将有帮助)
  4. 如果是,则将下划线附加到缓冲区。
  5. 将当前字符附加到缓冲区。

答案 2 :(得分:2)

这是一个让你思考可能解决方案的提示:

  1. 找到一种将字符串拆分为每个大写字母的部分的方法
  2. 使用它们之间的下划线加入拆分字符串
  3. 有用的关键字:

    • 分割
    • 正则表达式/正则表达式