0

我遇到了一个非常奇怪的问题,几个小时我都无法弄清楚。基本上我想把这个分开getInterfaceBounds-client.ry,我在做什么

final String className = line.split(".")[0]; 

我得到了一个arrayindexoutofbounds例外。我真的不知道为什么,你呢?

Exception in thread "Thread-3" java.lang.ArrayIndexOutOfBoundsException: 0

4

4 回答 4

3

split使用正则表达式。在正则表达式.中表示任何字符,因此您需要对其进行转义。

尝试:

final String className = line.split("\\.")[0];

请参阅http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#sum

于 2013-01-19T05:32:53.763 回答
1

所需的更改是:

final String className = line.split("\\.")[0]; 

查看此示例以获取更多详细信息。

  String s="getInterfaceBounds-client.ry";
  String[] arr = s.split("\\.");
  for(String str : arr)
  {
    System.out.println(str);
  }

ideone链接

于 2013-01-19T05:28:08.313 回答
0

改用它,它会起作用。我刚刚测试了它。

String line = "getInterfaceBounds-client.ry";

String className = line.split("[.]")[0]; 

System.out.println(className);

这 。是正则表达式中的一个特殊字符,代表任何字符。

您可以在此处了解有关正则表达式中不同特殊字符的更多信息: http ://www.fon.hum.uva.nl/praat/manual/Regular_expressions_1__Special_characters.html

于 2013-01-19T05:28:21.720 回答
0

使用数组变量,split()因为我们可能会从拆分中获得更多的值,所以如果你使用数组,它将避免访问值的混淆,例如:

String line = "getInterfaceBounds-client.ry.test";
String test[] = line.split("[.]");
System.out.println(test[0]+test[1]+test[2]);
于 2013-01-19T05:33:03.623 回答