我有这个非常奇怪的问题,我几个小时都无法弄清楚。基本上我试图拆分这个getInterfaceBounds-client.ry
,我正在做的是这个
final String className = line.split(".")[0];
我得到arrayindexoutofbounds
例外。我真的不知道为什么,是吗?
Exception in thread "Thread-3" java.lang.ArrayIndexOutOfBoundsException: 0
答案 0 :(得分:3)
split
使用正则表达式。正则表达式.
表示任何字符,因此您需要将其转义。
尝试:
final String className = line.split("\\.")[0];
请参阅http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#sum
答案 1 :(得分: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 link。
答案 2 :(得分: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
答案 3 :(得分:0)
对split()
使用数组变量,因为我们可能从分割得到的不仅仅是一个值,所以如果你使用数组会有所帮助,这样可以避免混淆访问值,例如:
String line = "getInterfaceBounds-client.ry.test";
String test[] = line.split("[.]");
System.out.println(test[0]+test[1]+test[2]);