[英]Splitting a string in Java using multiple delimiters
我有一个像
String myString = "hello world~~hello~~world"
我正在使用像这样的分割方法
String[] temp = myString.split("~|~~|~~~");
我希望数组temp仅包含由〜,~~或~~~分隔的字符串。
但是,这样创建的临时数组的长度为5,另外2个“字符串”为空字符串。
我希望它仅包含我的非空字符串。 请帮忙。 谢谢!
您应该对字符使用量词:
String[] temp = myString.split("~+");
String#split()
采用正则表达式。 ~+
将匹配1个或多个~
,因此它将拆分为~
或~~
或~~~
,依此类推。
另外,如果只想分割~
, ~~
或~~~
,则可以使用{m,n}
量词来限制重复,该量词将模式从m匹配到n次:
String[] temp = myString.split("~{1,3}");
按照您的方式拆分它时,它将在~
上拆分a~~b
两次,因此中间元素将是一个空字符串。
您还可以通过反转定界符的顺序来解决该问题,如下所示:
String[] temp = myString.split("~~~|~~|~");
那将首先尝试在~~
上拆分,然后再拆分~
并正常工作。 但是您应该使用第一种方法。
只需扭转模式:
String myString = "hello world~~hello~~world";
String[] temp = myString.split("~~~|~~|~");
尝试这个 :
myString.split("~~~|~~|~");
肯定会的。 在您的代码中,当~
第一次出现时,实际上会发生什么,它将算作第一个分隔符并从该点开始拆分字符串。 因此,尽管它在字符串中的任何位置都不会得到~~
或~~~
。 喜欢 :
[hello world]~[]~[hello]~[]~[world]
方括号分为5个不同的字符串值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.