Java:找到大写字母时拆分字符串
我认为这是一个简单的问题,但我无法找到一个简单的解决方案(例如,少于10行代码:)
我有一个这样的,我需要将其转换为.String
"thisIsMyString"
String[] {"this", "Is", "My", "String"}
请注意,第一个字母不是大写的。
我认为这是一个简单的问题,但我无法找到一个简单的解决方案(例如,少于10行代码:)
我有一个这样的,我需要将其转换为.String
"thisIsMyString"
String[] {"this", "Is", "My", "String"}
请注意,第一个字母不是大写的。
您可以使用具有零宽度正前瞻的正则表达式 - 它查找大写字母,但不将它们包含在分隔符中:
String s = "thisIsMyString";
String[] r = s.split("(?=\\p{Upper})");
Y(?=X)
匹配项后跟 ,但不包括在匹配项中。因此,匹配一个空序列,后跟一个大写字母,并将其用作分隔符。Y
X
X
(?=\\p{Upper})
split
有关 Java 正则表达式语法的更多信息,请参阅 javadoc。
编辑:顺便说一句,它不适用于 .对于非 ASCII 大写字母,您需要一个 Unicode 大写字符类,而不是 POSIX 字符类:thisIsMyÜberString
String[] r = s.split("(?=\\p{Lu})");
String[] camelCaseWords = s.split("(?=[A-Z])");