我有一个像分割使用多个分隔符在Java中的字符串
String myString = "hello world~~hello~~world"
字符串我使用的分割方法是这样
String[] temp = myString.split("~|~~|~~~");
我想要的阵列温度只包含隔开的字符串〜,~~或~~~。
但是,因此创建的临时数组的长度为5,另外2个“字符串”为空字符串。
我希望它只包含我的非空字符串。请帮忙。谢谢!
我有一个像分割使用多个分隔符在Java中的字符串
String myString = "hello world~~hello~~world"
字符串我使用的分割方法是这样
String[] temp = myString.split("~|~~|~~~");
我想要的阵列温度只包含隔开的字符串〜,~~或~~~。
但是,因此创建的临时数组的长度为5,另外2个“字符串”为空字符串。
我希望它只包含我的非空字符串。请帮忙。谢谢!
你应该用的量词与你的性格:
String[] temp = myString.split("~+");
String#split()
需要一个正则表达式。 ~+
将匹配1个或多个~
,因此它将分割为~
或~~
或~~~
等等。
String[] temp = myString.split("~{1,3}");
:
另外,如果只是要分割上~
,~~
,或~~~
,则可以通过使用{m,n}
量词,它匹配从米到Ñ倍的图案限制重复
当您按照自己的方式拆分它时,它将在~
上拆分a~~b
两次,因此中间元素将为空字符串。
你可能也通过反转您的分隔符的顺序是这样解决了这个问题:
String[] temp = myString.split("~~~|~~|~");
这将首先尝试拆就~~
,分裂之前~
和做工精细。但是你应该使用第一种方法。
只需转动模式围:
String myString = "hello world~~hello~~world";
String[] temp = myString.split("~~~|~~|~");
+1用于计算OP实际要求的内容。 –
试试这个:
myString.split("~~~|~~|~");
它肯定会工作。在你的代码中,实际上第一次发生~
时会发生什么,它将作为第一个分隔符并从该点开始拆分字符串。所以它不会在您的字符串中的任何地方得到~~
或~~~
,尽管它在那里。像:
[hello world]~[]~[hello]~[]~[world]
方括号被分成5个不同的字符串值。
请格式化您的代码与相应的标记为了可读性:http://stackoverflow.com/editing-help#code –
对不起,我会关注:) –