我遇到了一个非常奇怪的问题,几个小时我都无法弄清楚。基本上我想把这个分开getInterfaceBounds-client.ry
,我在做什么
final String className = line.split(".")[0];
我得到了一个arrayindexoutofbounds
例外。我真的不知道为什么,你呢?
Exception in thread "Thread-3" java.lang.ArrayIndexOutOfBoundsException: 0
split
使用正则表达式。在正则表达式.
中表示任何字符,因此您需要对其进行转义。
尝试:
final String className = line.split("\\.")[0];
请参阅http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#sum
所需的更改是:
final String className = line.split("\\.")[0];
查看此示例以获取更多详细信息。
String s="getInterfaceBounds-client.ry";
String[] arr = s.split("\\.");
for(String str : arr)
{
System.out.println(str);
}
ideone链接。
改用它,它会起作用。我刚刚测试了它。
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
使用数组变量,split()
因为我们可能会从拆分中获得更多的值,所以如果你使用数组,它将避免访问值的混淆,例如:
String line = "getInterfaceBounds-client.ry.test";
String test[] = line.split("[.]");
System.out.println(test[0]+test[1]+test[2]);