【问题标题】:Why index is out of bouds?为什么索引超出范围?
【发布时间】:2015-11-05 10:55:14
【问题描述】:

我有这个文字Hello, {between brackets 1}and{between brackets 2},我想用某种颜色为括号之间的文字着色,这就是我所做的:

String text = "Hello, {between brackets 1}and{between brackets 2}";
String output = "";
while(text.contains("}")){                
    output = output + text.substring(0, text.indexOf("{"));
    output = output + "<font color='#00e1ff'>"+text.substring(
    text.indexOf("{")+1, text.indexOf("}")-1)+"</font>";
    text = text.substring(text.indexOf("}"), text.length()-1);
}

但我在第 10 行得到了一个 indexOutOfBoundsException,即:

output = output + "<font color='#00e1ff'>"+text.substring(
text.indexOf("{")+1, text.indexOf("}")-1)+"</font>";

【问题讨论】:

  • 阅读 substring() 的文档。你的第二个参数是错误的。
  • 我还强烈建议您提取 text.indexOf("{")text.indexOf("}") 的局部变量,然后格式化您的代码...只需执行这两件事将使您的代码很多 更清晰。

标签: java string substring indexoutofboundsexception


【解决方案1】:

在您的text = text.substring(text.indexOf("}"), text.length()-1); 中,您没有删除右括号。所以文本是"}and{between brackets 2"

试试这个:

text = text.substring(text.indexOf("}") + 1), text.length());

PS:学习如何使用调试器。在这种情况下,这很容易而且很有帮助。

【讨论】:

  • 可能的错字:text = text.substring(text.indexOf("}") + 1, text.length());
  • 是的。我失去了我的支架。谢谢
猜你喜欢
  • 1970-01-01
  • 2016-07-01
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 2020-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多