我有这段代码:
class CMD{
public static void main(String[] s){
String[] spt = s[0].split(".");
System.out.println(spt[0]);
}
}
要执行程序,我正在使用命令:
java CMD Test.java
我认为该程序应该打印Test
,但我得到ArrayIndexOutOfBoundsException
为什么呢?
答案 0 :(得分:5)
问题是你正在分裂“。”这意味着正则表达式中的“任何字符”。因此,虽然“任何字符”可以是分隔符,但您的分割不返回实际值。 (我很惊讶它不会返回一个空字符串或几个空字符串,但这是另一回事。)
如果你逃脱了“。”使用反斜杠(然后转义为字符串文字中的反斜杠)它可以工作:
String[] spt = s[0].split("\\.");
另一种(对于这个小程序而言非常类似,但在现实世界的应用程序中很有用)是使用Guava及其Splitter
类:
Splitter splitter = Splitter.on('.');
Iterable<String> bits = splitter.split(s);
for (String bit : bits) {
System.out.println(bit);
}
答案 1 :(得分:0)
使用以下内容即可得到答案。
java CMD“Test.java”