Java:找到大写字母时拆分字符串

2022-08-31 17:22:30

我认为这是一个简单的问题,但我无法找到一个简单的解决方案(例如,少于10行代码:)

我有一个这样的,我需要将其转换为.String"thisIsMyString"String[] {"this", "Is", "My", "String"}

请注意,第一个字母不是大写的。


答案 1

您可以使用具有零宽度正前瞻的正则表达式 - 它查找大写字母,但不将它们包含在分隔符中:

String s = "thisIsMyString";
String[] r = s.split("(?=\\p{Upper})");

Y(?=X)匹配项后跟 ,但不包括在匹配项中。因此,匹配一个空序列,后跟一个大写字母,并将其用作分隔符。YXX(?=\\p{Upper})split

有关 Java 正则表达式语法的更多信息,请参阅 javadoc

编辑:顺便说一句,它不适用于 .对于非 ASCII 大写字母,您需要一个 Unicode 大写字符类,而不是 POSIX 字符类:thisIsMyÜberString

String[] r = s.split("(?=\\p{Lu})");

答案 2
String[] camelCaseWords = s.split("(?=[A-Z])");