1

我有这个代码片段:

class CMD{
    public static void main(String[] s){
        String[] spt = s[0].split(".");
        System.out.println(spt[0]);
    }
}

要执行我正在使用命令的程序:

java CMD Test.java

我应该程序应该打印Test,但我得到ArrayIndexOutOfBoundsException.
为什么?

4

2 回答 2

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);
}
于 2013-06-04T06:18:06.563 回答
0

使用以下内容,您将得到答案。

java CMD“Test.java”

于 2013-06-04T06:07:16.890 回答