1

您好,我在代码中是 java 新手我收到错误,因为字符串索引超出范围:-21 我的代码是

String targetLexForRemaining=categoryWordStr.substring(categoryWordStr.indexOf("@@")+2,categoryWordStr.indexOf(" "));

在这一行我得到一个错误?我该怎么做?

4

2 回答 2

9

beginIndex如果为负数,或endIndex大于此 String 对象的长度,或beginIndex大于,则引发IndexOutOfBoundsExceptionendIndex。阅读它的文档

subString您应该在调用方法之前检查这些条件。

int beginIndex=categoryWordStr.indexOf("@@");
int endIndex=categoryWordStr.indexOf(" ");

if(beginIndex!=-1 && beginIndex<=endIndex && endIndex<=categoryWordStr.length())
{
   //Call Substring
}
于 2013-07-24T12:36:06.427 回答
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);
于 2013-07-24T12:45:45.683 回答