Java - 转义 HTML 字符(不包括某些字符)

标签 java html regex

我正在尝试转义 HTML 代码中的特殊字符,除了标记中使用的字符(<、>、"、' 和 &)。我尝试为此搜索现有库(即 StringEscapeUtils),但所有这些都也会转义 <、>、"、' 和 & - 我不想转义的字符。

例如,如果我有

<div>— £</div>

我希望将其转换为

<div>&mdash; &pound;</div>

我不想这样

&lt;div&gt;&mdash; &pound;&lt;/div&gt;

有什么方法可以在Java中做到这一点吗?

最佳答案

将该类添加到您的代码中。 (该包是必需的,因为代码使用了一些包范围的名称。)


package org.apache.commons.lang;

public class Fix extends Entities {
    public static final Entities HTML04;
    static {
        HTML04 = new Entities();
        HTML04.addEntities(ISO8859_1_ARRAY);
        HTML04.addEntities(HTML40_ARRAY);
    }
    public static String escapeHtml(String str) {
        if (str == null) {
            return null;
        }
        return HTML04.escape(str);
    }
}

现在可以在没有 <, >, &, " 的情况下转义 HTML使用

String html = "<div> & — £ \"</div>
Fix.escapeHtml(html)

输出:

<div> & &mdash; &pound; "</div>

关于Java - 转义 HTML 字符(不包括某些字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33240756/

相关文章:

java - Android 上的 HTTP 客户端

javascript - Angular2 - 当 innerHTML 改变时做一些事情

python - re.findall - 将 ID 与名称匹配

JavaFX:嵌入式 JavaFX 小程序丢失宽度和高度?

java字符串替换和内存

java - java 日历中的 future 日期出现奇怪的行为

html - 覆盖 IE8 的 CSS 样式,多个类选择器

javascript - 网页中每个部分的最大化、最小化和关闭按钮

ruby - 奇怪,在 irb 中执行两次时相同的表达式产生不同的值

javascript - 选择多个换行符正则表达式