【问题标题】:StringIndexOutOfBoundsException: String index out of range: -2StringIndexOutOfBoundsException:字符串索引超出范围:-2
【发布时间】:2014-09-27 19:18:08
【问题描述】:

有一个名为s11String,我想从字符串中删除双引号。 s11 字符串包含 4b22a0f8-9047-4fd9-8330-d6fa7c85e90c。 我使用了以下代码:

String s12=s11.substring(1,s11.length()-1);
System.out.println(s12);

我收到以下错误:

java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:

-2

【问题讨论】:

  • s11.length() 的输出是什么?
  • "s11 字符串包含"4b22a0f8-9047-4fd9-8330-d6fa7c85e90c"" 如果异常来自s11.substring(1,s11.length()-1); 行,那么它不包含您声明的内容。我实际上怀疑此异常是否与您发布的代码有关,因为索引-2 无法在此处实现(长度()永远不会是负数,因此nonNegativeValue - 1 不能永远与-2 一起产生)。邮政编码将让我们重现您的问题。同时发布堆栈跟踪。
  • 要删除双引号,你可以 String s12=s11.replace("\"", ""); bytheway
  • 同意@Pshemo。 s11 很可能是空的,所以 s11.length() - 1-1 并且由于子字符串是上界独有的,因此您会收到一个错误,索引为 -2
  • 这个问题与 selenium-webdriver 完全无关。

标签: java string


【解决方案1】:

如果您只想删除引号,请尝试:

String s12=s11.replaceAll("\"","");

这不会在空字符串上中断,而是做你想做的事

【讨论】:

    【解决方案2】:
    String s11 = "4b22a0f8-9047-4fd9-8330-d6fa7c85e90c";
    String s12=s11.substring(1,s11.length()-1);
    System.out.println(s12);
    

    输出对我来说很好

    b22a0f8-9047-4fd9-8330-d6fa7c85e90
    

    【讨论】:

      猜你喜欢
      • 2013-04-15
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多