拆分字符串2次但有不同的拆分&#34 ;;"和"。"

时间:2016-02-01 17:56:27

标签: java arrays string

Original String:" 12312123; www.qwerty.com"

使用此Model.getList().get(0).split(";")[1]

我得到:" www.qwerty.com"

我尝试过这样做:Model.getList().get(0).split(";")[1].split(".")[1]

但它没有用,我得到了例外。我该如何解决这个问题?

我只想要" qwerty"

6 个答案:

答案 0 :(得分:1)

尝试使用split(";|\\."),如下所示:

 for (String string : "12312123;www.qwerty.com".split(";|\\.")) {

        System.out.println(string);
    }

输出:

  12312123
  www
  qwerty
  com

答案 1 :(得分:0)

您可以拆分具有多个分隔符的字符串。示例如下:

String abc = "11;xyz.test.com";
String[] tokens = abc.split(";|\\.");
System.out.println(tokens[tokens.length-2]);

答案 2 :(得分:0)

array index 1部分在这里没有意义。它将抛出一个ArrayIndexOutOfBounds异常或类似的东西。

这是因为拆分基于"。"没有按照你想要的方式工作。你需要通过放置" \。"来逃避这段时间。代替。你会发现here"。"意味着完全不同的东西。

答案 3 :(得分:0)

试试这个,实现“qwerty”:

Model.getList().get(0).split(";")[1].split("\\.")[1]

您需要转义点符号

答案 4 :(得分:0)

您需要逃离.,即"\\."。句点是正则表达式中的特殊字符,表示“任何字符”。

你当前的分裂意味着“分裂在任何角色上”;这意味着它将字符串拆分为多个空字符串,因为连续出现的“任何字符”之间没有任何内容。

String.split方法的行为存在一个微妙的问题,即它会丢弃令牌数组中的尾随空字符串(除非您将负数作为第二个参数传递)。

由于整个令牌数组由空字符串组成,所有这些都被丢弃,因此拆分的结果是零长度数组 - 因此当您尝试访问其中一个元素时会出现异常。

答案 5 :(得分:0)

不要使用split,使用正则表达式(直接)。它更安全,更快。

String input = "12312123;www.qwerty.com";
String regex = "([^.;]+)\\.[^.;]+$";
Matcher m = Pattern.compile(regex).matcher(input);
if (m.find()) {
    System.out.println(m.group(1)); // prints: qwerty
}