拆分字符串时出错

时间:2013-01-19 05:21:21

标签: java split

我有这个非常奇怪的问题,我几个小时都无法弄清楚。基本上我试图拆分这个getInterfaceBounds-client.ry,我正在做的是这个

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

我得到arrayindexoutofbounds例外。我真的不知道为什么,是吗?

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

4 个答案:

答案 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]);