java
  • exception
  • indexoutofboundsexception
  • 2011-07-16 93 views -2 likes 
    -2

    我真的停留在这个异常字符串索引越界异常中

    private static void getUserComment(String s) { 
        while(s.contains("author'>")){ 
         System.out.println(s.substring(s.indexOf("author'>"), 
                 s.indexOf("<div id='"))); 
         s = s.substring(0, s.indexOf("author'>")) + 
              s.substring(s.indexOf("<div id='"+9)); 
    
        } 
    } 
    
    +0

    你的输入字符串是什么样的? – Mat

    +0

    哪一行导致异常? – Arjan

    +0

    打印和子字符串语句都会产生这个异常 – Nayef

    回答

    3

    您应该使用合适的解析器,或至少做一些正则表达式模式匹配(这已经是“够坏”的HTML或XML )。

    这就是说,你的“偏移”的9很可能是异常的间接原因:

    ​​

    这将使一个字符串<div id='9未找到; indexOf然后返回-1,这会引起substring方法中的异常。也许你想实际上像这样将9添加到索引中? s.indexOf("<div id='")+9

    请注意,函数无用,更改s只会更改局部变量而不是原始变量(参数是按Java中的值)。

    +0

    我想要的是削减作者信息并使用它并找到下一位作者并从字符串中删除他的信息,所以一段时间后我最终会没有作者...... 我不知道模式匹配的任何内容,它会是一个很好的方式来提取信息? – Nayef

    +0

    @Nayef - 模式匹配有很多资源。即使书籍。正如@Lucero所说,它会工作(大部分时间)。但适当的HTML解析器是一个更好的主意。 –

    +1

    正如我写的,使用正确的解析器。 [HTML Parser](http://htmlparser.sourceforge.net/)开源项目可能适合您的提取需求(但也有其他人)。 – Lucero

    相关问题