java - 如何分割Java字符串但保留其部分内容?

标签 java

我正在研究java字符串分割。我希望按照“.uppercase”分割字符串(“.”和“uppercase”之间有一个空格),例如:

". A" ". B" ". C"...

另外,我希望保留“.”。和“大写”,有什么有效的方法可以做到这一点吗?我用的是

String.split("\\.\\s") 

之前,但它会删除“.”我用。所以这不是一个理想的解决方案。谢谢

结果示例

String = This is an Egg. This is a dog. "I just come up with this example"
String[0] = This is an Egg.
String[1] = This is a dog. "I just come up with this example"

更多编辑:

有一个问题,通常的方式似乎会将分隔符保留在其字符串之一。但我希望在某种意义上分割分隔符。(在我的示例中,“.[A-Z]”也被分割)

最佳答案

您可以使用 lookaround :

str.split("(?<=\\.\\s+)(?=\p{Lu})")

这会将“First句子.Foo bar.test”拆分为数组

{ "First sentence. ", 
  "Foo bar. test" }

如果您不想包含空格,只需将其放在环视断言之间即可:

str.split("(?<=\\.)\\s+(?=\p{Lu}")

这将导致

{ "First sentence.", 
  "Foo bar. test" }

对于上面的示例字符串。

关于java - 如何分割Java字符串但保留其部分内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10260277/

相关文章:

java - 将 Handler 注入(inject)注解 Controller

java - 理解 Java 的非阻塞 I/O

java - 我可以一直保留一个 jdbc 连接吗

java - .listFiles() 是否有可能在不同的系统上以不同的顺序返回文件

java - 如何动态扩展diff父类?

java - FileChannel 与 RandomAccessFile

java - 使用 Jackson 序列化通用接口(interface)子类

java - 数组赋值 vs. for 循环赋值

java - 如何从txt中删除行?

java - 调用bean时Primefaces RemoteCommand时滞