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

标签 java regex string

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

我有一个 String 例如 "thisIsMyString" 我需要将它转换成一个 String[] {"this", "Is", "我的”,“字符串”}.

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

最佳答案

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

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

Y(?=X) 匹配 Y 后跟 X,但不包括 X匹配。所以 (?=\\p{Upper}) 匹配一个空序列后跟一个大写字母,split 使用它作为分隔符。

javadoc有关 Java regexp 语法的更多信息。

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

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

关于Java:找到大写字母时拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3752636/

相关文章:

在C中更改指针字符串数组中的值

c - 通过函数传递字符串(C 编程)

java - 从jsp EL调用HashMap?

java - Android opencv加载16位深度的灰度png

Java -\pL [\x00-\x7F]+ 正则表达式无法使用 String.match 获取非英文字符

regex - htaccess 正则表达式匹配除字符串或扩展名之外的所有内容

c - 字符串数组随机排序

java - Rabbitmq 中的并发生产者无限期阻塞

java - Neo4j 图回溯算法

javascript - 正则表达式替换仅适用于最后一场比赛