繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM