字符串索引超出范围:-1

时间:2013-03-25 11:55:32

标签: java xml xml-parsing

//filename 1.xml

<category 
hello world
</category>
//when iam trying to parse this file using the following code it throws String index out of range: -1
 output: startPos: -1
         endPosi: -1

 String dataLine = nextLine.trim();
 int startPos = dataLine.indexOf(startToken);
 logger.debug("startPos: " + startPos);
 int endPosi = dataLine.lastIndexOf(endToken);
 logger.debug("endPosi: " + endPosi);

// 2.xml it parses this file which contains the following line

<category hello world </category>

//这两个文件之间的唯一区别是第一个文件的内容分为三行,第二个文件的内容在一行中。

3 个答案:

答案 0 :(得分:1)

将输入文件更改为:

<category>
    hello world
</category>

然后你的开始标记为:

String startToken = "<category>";

您遇到的一个问题是<category是无效的XML。 .trim()正在剥离第一个文件第一行的尾随空格。简短回答:修复XML。

答案 1 :(得分:0)

方法trim()删除尾随空格。现在indexOf()找不到“<category”(带有尾随空格)并返回-1

答案 2 :(得分:0)

int startPos = dataLine.indexOf(startToken);

我认为dataLine字符串中没有startToken,因此返回-1;

String#indexOf("str")

  

如果字符串参数作为此对象中的子字符串出现,那么   第一个这样的子串的第一个字符的索引是   回;如果它不作为子字符串出现,则返回-1。