比如有这样的html代码: [code="java"]
[/code] 想要实现把、等标签中的“target”、“href”、"id"、"style"等信息去除,只留下单纯的、形式。我用了java字符串匹配替换的方法: [code="java"] private static String removeInTag(String a) { StringBuffer aaa = new StringBuffer(); aaa.append(a); int BeginIndex = 0; while(BeginIndex != -1){ BeginIndex = aaa.indexOf("<",BeginIndex); int StarIndex = aaa.indexOf(" ", BeginIndex); int EndIndex = aaa.indexOf(">", BeginIndex); int PreventErr = aaa.indexOf("<", BeginIndex); if ((PreventErr > EndIndex) && (StarIndex > StarIndex)){ aaa.replace(StarIndex, EndIndex, ""); } } return aaa.toString(); } [/code] 但出现了死循环,死循环的原因何在? 同时由于本人初学java,所以这个方法可能不是最好方法,有没有更高效、更不易出错的方法呢?谢谢!
[code="java"] private static String removeInTag(String a) { StringBuffer aaa = new StringBuffer(); aaa.append(a); int BeginIndex = 0; while(BeginIndex != -1){ BeginIndex = aaa.indexOf("<",BeginIndex); int StarIndex = aaa.indexOf(" ", BeginIndex); int EndIndex = aaa.indexOf(">", BeginIndex); int PreventErr = aaa.indexOf("<", BeginIndex); if ((PreventErr > EndIndex) && (StarIndex > StarIndex)){ aaa.replace(StarIndex, EndIndex, ""); } } return aaa.toString(); } [/code] 但出现了死循环,死循环的原因何在? 同时由于本人初学java,所以这个方法可能不是最好方法,有没有更高效、更不易出错的方法呢?谢谢!
[b]试试吧:[/b]
[code="java"] String aaa = "
System.out.println(aaa.replaceAll("<(/?\\S+)\\s*?[^<]*?(/?)>","<$1$2>")); // <div><li> <a>情感</a></li><li> <a>美容</a></li></div>[/code]