用java字符串方法去除HTML代码标签的问题

比如有这样的html代码:
[code="java"]

[/code]
想要实现把

[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]

[code="java"]
// 可以使用正则表达式
String str = "

"
+"情感"
+"美容"
+"
";

System.out.println(str.replaceAll("(<\/?)\s*(\S+).*?(\/?>)", "$1$2$3"));
//输出


[/code]

楼上的已经给你答案了。我告诉你死循环的原因吧
while(BeginIndex != -1){

}
BeginIndex != -1 永远为true,所以会死循环

[code="java"]String regEx = "<[^>]+>";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(content);
String result = content;
if (m.find()) {
result = m.replaceAll("");
}
return result;[/code]

code="java"\s*(\S+).*?(\/?>)
// (<\/?) 匹配 <或则</
// \s*表示匹配0或者多个空格
// (\S+)表示非空格, 也就是匹配a, div, 之类的
// .*?表示匹配其他字符
// (\/?>)表示匹配/>或者>

// $1表示(<\/?)匹配出来的值
// $2表示(\S+)匹配出来的值
// $3表示(\/?>)匹配出来的值
[/code]
你可以去找些正则表达式的资料看看.
正则表达式在文字处理上有很大的方便之处

public class Snippet {
public static void main(String[] args) {
String str = "

";
int length = str.length();
System.out.println("原始数据:"+str);
//System.out.println("length : "+length);
int headIndex = str.indexOf(" ");
int tailIndex = str.indexOf(">");
while(tailIndex0){
//System.out.println("headIndex = "+headIndex);
//System.out.println("tailIndex = "+tailIndex);
str = str.replace(str.substring(headIndex,tailIndex), "");
//System.out.println(str);
headIndex = str.indexOf(" ");
tailIndex = str.indexOf(">",headIndex+1);
}
System.out.println("替换后:"+str);
}

}

按照你原来的代码我改了个,可以实现你的需求,我没有注释,你可以看一下,找一下自己代码的不足,你可以把每次取得的BeginIndex等打印出来,看一下每次你希望取得的index和实际的差别。

你可以直接运行,查看效果。。。

[color=blue][b]yy629 的解答很不错,本人再在稍微修改下:[/b][/color]

[code="java"] System.out.println(str.replaceAll("</?(\S+)\s*?.*?>","<$1>"));[/code]

[color=blue][b]括号加错了,这样好了。呵呵,谢谢yy629的指点![/b][/color]

System.out.println(str.replaceAll("<(/?\S+)\s*?.*?>","<$1>"));