java
  • exception
  • indexoutofboundsexception
  • 2011-07-16 94 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

    相關問題