使用多个分隔符在Java中拆分字符串

时间:2013-08-30 09:51:15

标签: java regex string

我有一个像

这样的字符串
String myString = "hello world~~hello~~world"

我正在使用像这样的分割方法

String[] temp = myString.split("~|~~|~~~");

我希望数组temp只包含由〜,~~或~~~分隔的字符串。

但是,这样创建的临时数组长度为5,另外2个“字符串”为空字符串。

我希望它只包含我的非空字符串。请帮忙。谢谢!

3 个答案:

答案 0 :(得分:8)

你应该对你的角色使用量词:

String[] temp = myString.split("~+");

String#split()采用正则表达式。 ~+将匹配1个或多个~,因此它将分为~~~~~~,依此类推。

此外,如果您只想分开~~~~~~,那么您可以使用{m,n}量词来限制重复,该量词匹配模式从 m n 次:

String[] temp = myString.split("~{1,3}");

当您按照自己的方式进行拆分时,它会在a~~b上拆分~两次,因此中间元素将为空字符串。

您也可以通过颠倒分隔符的顺序来解决问题:

String[] temp = myString.split("~~~|~~|~");   

这将首先尝试拆分~~,然后拆分~并且可以正常工作。但是你应该使用第一种方法。

答案 1 :(得分:4)

只需转动图案:

    String myString = "hello world~~hello~~world";
    String[] temp = myString.split("~~~|~~|~");

答案 2 :(得分:3)

试试这个:

myString.split("~~~|~~|~");

一定会奏效。在您的代码中,实际发生的情况是,当~第一次出现时,它将计为第一个分隔符并从该点分割字符串。因此,尽管它存在,但它不会在您的字符串中的任何位置获得~~~~~。喜欢:

[hello world]~[]~[hello]~[]~[world]

方括号分为5个不同的字符串值。