我有一个像
这样的字符串String myString = "hello world~~hello~~world"
我正在使用像这样的分割方法
String[] temp = myString.split("~|~~|~~~");
我希望数组temp只包含由〜,~~或~~~分隔的字符串。
但是,这样创建的临时数组长度为5,另外2个“字符串”为空字符串。
我希望它只包含我的非空字符串。请帮忙。谢谢!
答案 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个不同的字符串值。