【问题标题】:Removing all <br> from the end of a String从字符串的末尾删除所有 <br>
【发布时间】:2019-09-05 02:26:25
【问题描述】:

假设我有一个String,在字符串的末尾有多个&lt;br&gt; 标签,
我怎样才能一次全部删除?
我尝试过使用if(text.endsWith("&lt;br&gt;") text.replace("&lt;br&gt;", "");,但这只会删除所有其他人之一..

【问题讨论】:

标签: java android


【解决方案1】:

试试这个,
text = text.replaceAll("&lt;br&gt;","").replaceAll("&lt;br&gt;","");

【讨论】:

    【解决方案2】:

    在这些情况下,您应该查看官方 Javadoc 文档:

    https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replaceAll(java.lang.String,%20java.lang.String)

    您要查找的方法是 public String replaceAll(String regex, String replacement),它替换所有出现的指定模式。 在你的情况下,它应该是这样的:

    fullText.replaceAll("<br>", ""),
    

    其中 fullText 是包含您要处理的所有文本的变量。

    EDIT:从您的 cmets 中,我了解到您只想删除字符串末尾的 br,并且我认为 text 包含多行。 由于 replaceAll 可以使用正则表达式,你应该可以这样做:

    fullText.replaceAll("<br>\\n", "\\n"),
    

    编辑 2:我希望我能发表评论...请忽略我的答案,我认为正确的答案是 Andy Turner 的答案。仅删除行尾的 br 似乎确实可以正常工作。

    【讨论】:

    • replace 全部替换
    • 你是对的,如果你不使用正则表达式来处理字符串,那么你可以使用replace而不是replaceAll。在这种情况下,我更新了答案,因为它需要一个正则表达式。
    • @George 换行符不仅出现在字符串的末尾,也不一定出现在字符串的末尾。特别是,OP 的字符串末尾没有换行符。
    • 你是对的,问题是我没有完全理解这个问题,但我已经编辑了答案以反映我错了。感谢您的意见。
    【解决方案3】:

    如果您只想在字符串末尾删除它们:

    text = text.replaceAll("(<br>)*$", "");
    

    $ 锚点是必要的,以确保它不会替换字符串中前面的其他匹配项。

    如果你愿意,你可以不用正则表达式:

    int a = text.length();
    while (a >= "<br>".length() && text.regionMatches(a - "<br>".length(), "<br>", 0, "<br>".length())) {
      a -= "<br>".length();
    }
    text = text.substring(0, a);
    

    【讨论】:

    • 正则表达式更好更简单。
    【解决方案4】:

    我不认为 java 中有特定的方法可以做到这一点。但是,您可以使用 while 循环来实现:

    String text = "hello world <br><br><br>";
    while (text.endsWith("<br>")) {
        text = text.substring(0, text.length() - 4);
    }
    

    【讨论】:

    • replace 全部替换
    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    相关资源
    最近更新 更多