我有一个字符串
String myString = "hello world~~hello~~world"
Run Code Online (Sandbox Code Playgroud)
我正在使用这样的拆分方法
String[] temp = myString.split("~|~~|~~~");
Run Code Online (Sandbox Code Playgroud)
我希望数组temp只包含由〜,~~或~~~分隔的字符串.
但是,这样创建的临时数组长度为5,另外2个"字符串"为空字符串.
我希望它只包含我的非空字符串.请帮忙.谢谢!
你应该对你的角色使用量词:
String[] temp = myString.split("~+");
Run Code Online (Sandbox Code Playgroud)
String#split()采取正则表达式.~+将匹配1或更多~,因此它将拆分~,或~~,或~~~,依此类推.
此外,如果你只是想拆就~,~~或者~~~,你可以通过使用限制重复{m,n}量词,它匹配从图案米至ñ次:
String[] temp = myString.split("~{1,3}");
Run Code Online (Sandbox Code Playgroud)
当你按照你的方式分割它时,它将分裂a~~b两次~,因此中间元素将是一个空字符串.
您也可以通过颠倒分隔符的顺序来解决问题,如下所示:
String[] temp = myString.split("~~~|~~|~");
Run Code Online (Sandbox Code Playgroud)
这将首先尝试分裂~~,然后分裂~,并将工作正常.但是你应该使用第一种方法.