Original String:" 12312123; www.qwerty.com"
使用此Model.getList().get(0).split(";")[1]
我得到:" www.qwerty.com"
我尝试过这样做:Model.getList().get(0).split(";")[1].split(".")[1]
但它没有用,我得到了例外。我该如何解决这个问题?
我只想要" qwerty"
答案 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
}