我有这个代码片段:
class CMD{
public static void main(String[] s){
String[] spt = s[0].split(".");
System.out.println(spt[0]);
}
}
要执行我正在使用命令的程序:
java CMD Test.java
我应该程序应该打印Test,但我得到ArrayIndexOutOfBoundsException.
为什么?
我有这个代码片段:
class CMD{
public static void main(String[] s){
String[] spt = s[0].split(".");
System.out.println(spt[0]);
}
}
要执行我正在使用命令的程序:
java CMD Test.java
我应该程序应该打印Test,但我得到ArrayIndexOutOfBoundsException.
为什么?
问题是你在“。”上分裂。这意味着正则表达式中的“任何字符”。因此,虽然“任何字符”可以是分隔符,但您的拆分不会返回实际值。(我很惊讶它没有返回一个空字符串或几个空字符串,但这是另一回事。)
如果您转义“。” 使用反斜杠(然后在字符串文字中转义反斜杠)它可以工作:
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);
}
使用以下内容,您将得到答案。
java CMD“Test.java”