我有一个像这样的字符串“HelloWorld MyNameIsKarl”,我希望它变成类似“Hello_World _My_Name_Is_Carl”的字样。我怎么能这样做?
答案 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)
这是家庭作业吗?为了帮助您入门:
java.lang.Character
类将有帮助)答案 2 :(得分:2)
这是一个让你思考可能解决方案的提示:
有用的关键字: