Java字符串拆分使数组索引超出范围错误

时间:2015-12-31 04:41:27

标签: java debugging split

我今天遇到了这个不寻常的错误。任何人都可以解释我做错了什么。以下是代码:

AreStringsPermuted checkStringPerObj = new AreStringsPermuted();
String[] inputStrings = {"siddu$isdud", "siddu$siddarth", "siddu$sidde"};
for(String inputString : inputStrings){
    String[] stringArray = inputString.split("$");
    if(checkStringPerObj.areStringsPermuted(stringArray[0],stringArray[1]))
            System.out.println("Strings : " + stringArray[0] + " ," + stringArray[1] + " are permuted");
    else
            System.out.println("Strings : " + stringArray[0] + " ," + stringArray[1] + " are not permuted");
        }

以上代码在我尝试拆分字符串时出错。由于某些原因,当我尝试使用" $"来划分每个字符串时,拆分不起作用。谁能解释一下我在这里做错了什么?

以下是错误消息:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
    at arraysAndStrings.TestClass.checkStringsPermuted(TestClass.java:24)
    at arraysAndStrings.TestClass.main(TestClass.java:43)

2 个答案:

答案 0 :(得分:4)

String.split() takes a regular expression,因此您需要引用包含正则表达式中具有特殊含义的字符的字符串。

String regularExpression = Pattern.quote("$");
for (String inputString : inputStrings) {
  String[] stringArray = inputString.split(regularExpression);

答案 1 :(得分:0)

String.split()使用regex partern和$在regex(行尾)中有特殊含义。 在您的情况下,使用“\ $”而不是“$”。

String []arrayString = inputString.split("\\$");

欲了解更多信息, http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html