使用Java中的for循环删除html标记

时间:2011-10-16 10:19:37

标签: java

  

可能重复:
  Removing HTML from a Java String

我在从java中的文本文件中删除htmls标记时遇到问题。我知道使用像

这样的东西会很容易
str=str.toString().replaceAll("\\<.*?>","");

但是,我想知道我是否可以分割字符串并完成并替换来自&lt;的所有内容。到&gt;用“”。

我试过

String [] str= "<tag>with some string </tag>";
String  s="";
    for (i=0; i < str.length; i++)
    {
        if (str[i].toString()=="<")
        {
            str[i]="";
        }
        else if (str[i].toString()==">")
        {
            s=s+str[i+1];
        }
    }

当我尝试打印新字符串s时,它只打印出白色空格。 谢谢你的帮助

3 个答案:

答案 0 :(得分:1)

你需要一些表示你在标签内的标志变量,当你不在标签中时添加第三种情况,所以剩下的内容被添加到字符串中。例如:

String [] str= "<tag>with some string </tag>";
String  s="";
boolean inTag = false;
for (i=0; i < str.length; i++)
{
    if (str[i].toString()=="<")
    {
        inTag = true;
    }
    else if (str[i].toString()==">")
    {
        inTag = false;
    }else{
        if (!inTag)
            s = s + str[i];
    }
}

答案 1 :(得分:0)

您提供的代码有一些错误。但无论如何,你可以用String#Split

来做
String[] strArr = str.split("\\<.*?>");

这将消除标签。

答案 2 :(得分:0)

要从文本文件中删除html标记,请查看此论坛中之前讨论过的this主题