你好我在我的代码中是java的新手我得到一个错误,因为String索引超出范围:-21 我的代码是
String targetLexForRemaining=categoryWordStr.substring(categoryWordStr.indexOf("@@")+2,categoryWordStr.indexOf(" "));
在这一行我收到错误? 我该怎么做?
答案 0 :(得分:9)
beginIndex
为否定,或endIndex
大于此String对象的长度,或beginIndex
大于endIndex
,则会引发{p> IndexOutOfBoundsException 。阅读documentation。
在调用subString
方法之前,您应该检查这些条件。
int beginIndex=categoryWordStr.indexOf("@@");
int endIndex=categoryWordStr.indexOf(" ");
if(beginIndex!=-1 && beginIndex<=endIndex && endIndex<=categoryWordStr.length())
{
//Call Substring
}
答案 1 :(得分:2)
我怀疑有一个空格(“”)比你正在寻找的“@@”更早,这会使第二个参数陷入substring
。如果你想得到“@@和第一个空格之间的文本”,那么你应该使用indexOf
的重载作为起点:
int start = categoryWordStr.indexOf("@@");
// TODO: Validate that startisn't -1
int end = categoryWordStr.indexOf(" ", start);
// TODO: Validate that end isn't -1
String targetLexForRemaining = categoryWordStr.substring(start + 2, end);