我有一个字符串
String myString = "hello world~~hello~~world"
我正在使用这样的拆分方法
String[] temp = myString.split("~|~~|~~~");
我希望数组 temp 仅包含由 ~、~~ 或 ~ ~ 分隔的字符串。
但是,这样创建的临时数组的长度为 5,另外 2 个“字符串”是空字符串。
我希望它只包含我的非空字符串。请帮忙。谢谢!
你应该对你的角色使用量词:
String[] temp = myString.split("~+");
String#split()
需要一个正则表达式。~+
将匹配 1 个或多个~
,因此它将拆分~
, or ~~
, or ~~~
, 依此类推。
此外,如果您只想在 、 或 上拆分~
,~~
则~~~
可以使用{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 个不同的字符串值。