我正在尝试拆分:TwitterHashtagIsVeryCOMPLICATED
拆分后的字符串如下:Twitter Hashtag Is Very COMPLICATED
我可以使用正则表达式来做到这一点吗?
非常感谢您的任何建议。
这应该有效:
str.split("(?<=[a-z])(?=[A-Z])")
这个想法是对小写字母使用零长度lookbehind,对大写字母使用零长度lookahead。此构造仅在驼峰式字符串中的“断字”处匹配。
编辑受到 dasblinkenlight 的回答的 强烈启发(为此 +1)。我在这里只更改为 Unicode 类别以获得 Unicode 支持:
String test = "TwitterHashtagIsVeryCOMPLICATED";
for (String splitted: test.split("(?<=\\p{Ll})(?=\\p{Lu})")) {
System.out.println(splitted);
}
输出:
Twitter
Hashtag
Is
Very
COMPLICATED