2

我正在尝试拆分:TwitterHashtagIsVeryCOMPLICATED

拆分后的字符串如下:Twitter Hashtag Is Very COMPLICATED

我可以使用正则表达式来做到这一点吗?

非常感谢您的任何建议。

4

2 回答 2

5

这应该有效:

str.split("(?<=[a-z])(?=[A-Z])")

这个想法是对小写字母使用零长度lookbehind,对大写字母使用零长度lookahead。此构造仅在驼峰式字符串中的“断字”处匹配。

这是关于 ideone 的演示

于 2013-07-07T12:53:35.577 回答
2

编辑受到 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
于 2013-07-07T12:58:36.983 回答