【问题标题】:removing all "<...>" from a java String从 java 字符串中删除所有“<...>”
【发布时间】:2012-03-03 11:51:30
【问题描述】:

我有一个字符串,我想删除所有带有

的标签

例如:

在字符串中

<title>Java Code</title>

将会

Java Code

<pre><font size="7"><strong>Some text here

</strong></font><strong>

将会

Some text here

如何使用 charAt(i) 来完成? 提前致谢

【问题讨论】:

  • 您不想使用正则表达式的任何特殊原因?
  • @AnotherCode 我的文本也带有 标签,我想将它们全部删除,只看到文本。
  • 你可以找到类似的帖子,对你有帮助,stackoverflow.com/questions/240546/…
  • 如果您尝试解析 html,我建议您最好使用 html parser 来完成此任务。

标签: java string tags


【解决方案1】:

如何使用 charAt(i) 来完成?

方法如下:

public static void main(String[] args) {
    String s = "<pre><font size=\"7\"><strong>Some text here\n\n</strong></font><strong>";

    String o = "";
    boolean append = true;
    for (int i = 0; i < s.length(); i++) {
        if (s.charAt(i) == '<')
            append = false;

        if (append)
            o += s.charAt(i);

        if (s.charAt(i) == '>')
            append = true;
    }

    System.out.println(o);
}

【讨论】:

    【解决方案2】:

    使用正则表达式非常简单。

    String src = "<title>Java Code</title>";
    String dst = src.replaceAll("<.+?>", "");
    
    System.out.println(dst);
    

    【讨论】:

    • 他想使用charAt。 :)
    【解决方案3】:

    既然你特别想使用chatAt(i),这里是算法,

    • 从头开始遍历字符串。
    • 如果遇到的字符是开始标记 ()。然后检查下一个字符,如果是 (
    • 如果下一个字符不是 (
    • 然后重复步骤 2。

    【讨论】:

      【解决方案4】:

      使用charAt,您可以遍历字符串中的所有字符,删除从 的所有内容。但是,您的字符串可能包含非 ASCII UTF 代码点,这可能会破坏这种方法。

      我会使用正则表达式,比如

      String someTextHere = "...";
      String cleanedText = someTextHere.replaceAll( "<[^>]*?>", "" );
      

      不过,我还要向您指出 this question,它列出了与正则表达式方法有关的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-04
        • 2010-12-04
        • 2012-10-29
        • 2015-12-02
        • 2018-09-10
        • 2019-06-21
        相关资源
        最近更新 更多