从String中删除段

时间:2013-12-10 00:45:30

标签: java

我从网站解析HTML代码,我差不多完成了。我有从网站上需要的文本部分,但偶尔有一些链接包含在HTMl中,我希望摆脱它。我正在考虑使用这样一个事实:我不想要的所有元素都以'<'开头当然还有'>'。反正有没有这样做?这是我到目前为止所做的。

for(int i = 0; i<desc.length();i++)
    {
        if(desc.charAt(i)==('<')){

        }
    }

desc是我想修剪的字符串。

2 个答案:

答案 0 :(得分:0)

我会尝试这样的事情;

StringBuilder sb = new StringBuilder();
boolean open = false;
for (char c : desc.toCharArray()) { // iterate over the characters
  if (c == '<') { // if we hit a less then store that the tag is open.
    open = true;
  } else if (open && c == '>') { // if the tag is open and the close symbol hits close.
    open = false;
  } else if (!open) { // if the tag isn't open
    sb.append(c);
  }
}
System.out.println(sb.toString()); // print the string.

答案 1 :(得分:0)

通常认为手动解析XML和HTML等标记语言是个坏主意。但是,如果您只是想删除所有元素,我可以看到一个简单的脚本可能在哪里有用。

我认为值得一提的是,如果删除HTML的所有元素,您可能会将几段文本卡在一起。查看这段代码,看看它是否有帮助。

public class RemoveHtmlElements {

    public static void main(String[] args) {

        String html = "<!DOCTYPE html><html><body><h1>My First Heading</h1>"
                + "<p>My first paragraph.</p></body></html>";

        boolean elementsExist = true;
        while(elementsExist) {
            if(html.contains("<")) {
                int open = html.indexOf("<");
                int closed = html.indexOf(">", open);
                html = html.substring(0, open) + " " + html.substring(closed + 1);
            } else {
                elementsExist = false;
            }
        }

        System.out.println(html);

    }

}

这应该清除任何括号内元素的HTML。它将输入一个空格,删除元素以防止文本被意外地卡在一起。