您好,我在代码中是 java 新手我收到错误,因为字符串索引超出范围:-21 我的代码是
String targetLexForRemaining=categoryWordStr.substring(categoryWordStr.indexOf("@@")+2,categoryWordStr.indexOf(" "));
在这一行我得到一个错误?我该怎么做?
beginIndex
如果为负数,或endIndex
大于此 String 对象的长度,或beginIndex
大于,则引发IndexOutOfBoundsExceptionendIndex
。阅读它的文档。
subString
您应该在调用方法之前检查这些条件。
int beginIndex=categoryWordStr.indexOf("@@");
int endIndex=categoryWordStr.indexOf(" ");
if(beginIndex!=-1 && beginIndex<=endIndex && endIndex<=categoryWordStr.length())
{
//Call Substring
}
我怀疑在您要查找的“@@”之前有一个空格(“”),这会弄乱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);