Gui*_*ido 43 java regex string
我认为这是一个简单的问题,但我无法找到一个简单的解决方案(比如,少于10行代码:)
我有一个String这样的"thisIsMyString",我需要将其转换为String[] {"this", "Is", "My", "String"}.
请注意第一个字母不是大写字母.
axt*_*avt 102
您可以使用零宽度正向前瞻的正则表达式 - 它找到大写字母但不包括它们到分隔符:
String s = "thisIsMyString";
String[] r = s.split("(?=\\p{Upper})");
Run Code Online (Sandbox Code Playgroud)
Y(?=X)匹配Y后跟X,但不包括X匹配.因此(?=\\p{Upper})匹配一个空序列后跟一个大写字母,并将split其用作分隔符.
有关Java regexp语法的更多信息,请参阅javadoc.
编辑:顺便说一下,它也不起作用thisIsMyÜberString.对于非ASCII大写字母,您需要一个Unicode大写字符类而不是POSIX一个:
String[] r = s.split("(?=\\p{Lu})");
Run Code Online (Sandbox Code Playgroud)
Boz*_*zho 17
String[] camelCaseWords = s.split("(?=[A-Z])");
Run Code Online (Sandbox Code Playgroud)
Mul*_*der 11
对于那些想知道如何分割String的字符串可能以大写字符开头的人:
String s = "ThisIsMyString";
String[] r = s.split("(?<=.)(?=\\p{Lu})");
System.out.println(Arrays.toString(r));
Run Code Online (Sandbox Code Playgroud)
给出:[This,Is,My,String]
由于String::split采用正则表达式,您可以使用前瞻:
String[] x = "thisIsMyString".split("(?=[A-Z])");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41148 次 |
| 最近记录: |