1

我有一个字符串

String myString = "hello world~~hello~~world"

我正在使用这样的拆分方法

String[] temp = myString.split("~|~~|~~~");

我希望数组 temp 仅包含由 ~、~~ 或 ~ ~ 分隔的字符串。

但是,这样创建的临时数组的长度为 5,另外 2 个“字符串”是空字符串。

我希望它只包含我的非空字符串。请帮忙。谢谢!

4

3 回答 3

8

你应该对你的角色使用量词:

String[] temp = myString.split("~+");

String#split()需要一个正则表达式。~+将匹配 1 个或多个~,因此它将拆分~, or ~~, or ~~~, 依此类推。

此外,如果您只想在 、 或 上拆分~~~~~~可以使用{m,n}量词来限制重复,它匹配从mn次的模式:

String[] temp = myString.split("~{1,3}");

当您按照您的方式拆分它时,它将a~~b在 上拆分两次~,因此中间元素将是一个空字符串。

您也可以通过颠倒分隔符的顺序来解决问题,如下所示:

String[] temp = myString.split("~~~|~~|~");   

这将首先尝试拆分~~,然后拆分,~并且可以正常工作。但是你应该使用第一种方法。

于 2013-08-30T09:53:48.210 回答
4

只需将模式转过来:

    String myString = "hello world~~hello~~world";
    String[] temp = myString.split("~~~|~~|~");
于 2013-08-30T09:54:11.873 回答
3

尝试这个 :

myString.split("~~~|~~|~");

它肯定会奏效。在您的代码中,第一次发生时实际发生的情况~,它算作第一个分隔符并从该点拆分字符串。因此,尽管它在那里,但它不会在您的字符串中~~或任何地方出现。~~~喜欢 :

[hello world]~[]~[hello]~[]~[world]

方括号分为 5 个不同的字符串值。

于 2013-08-30T09:56:25.310 回答