0

我想使用 JSP 将包含“ < >”的字符串打印到网页上。我需要将任何“ >”和“ <”替换为“ &lt”和“ &gt”。我的字符串应该是“ java/io/Object”或“ <init>”等。谁能给我一个模式?

我知道两种替换字符串的方法。但我不知道如何使用它。

    1
    String ss = s.replaceAll("(?i)<a.*?>(.*?)</a>", "$1");
    System.out.println(ss);

    2
    Pattern replace = Pattern.compile("(?i)<a.*?>(.*?)</a>");
    Matcher matcher2 = replace.matcher(s);
    System.out.println(matcher2.replaceAll(""));

哪一个会快速替换字符串?谢谢你的时间。编辑:我不想转义 html 标签。像“”这样的字符串<init>不会打印在网页中,但它存在于html源文件中,因为浏览器将其作为标签。

4

3 回答 3

1

您要做的是转义 HTML;正则表达式不是答案。

有关更多信息,请参阅在 Java 中转义 HTML 的推荐方法。

于 2013-08-09T02:56:30.087 回答
1

您不需要正则表达式来替换 Java 中的尖括号。

你最好的选择是使用 vanilla String 方法:

public String replaceAngleBrackets(String s) {
    return s.replace("<", "&lt;").replace(">", "&gt;");
}

这种单行方法执行速度更快,更易于阅读、维护和重用。

于 2013-08-09T03:07:27.197 回答
0

使用 JSLT 标记out,它将值转义以安全呈现。在您的 JSP 中将此标记放入您希望呈现值的位置:

<c:out value="${myVar}" escapeXml="true" />

myVar您要打印的字符串变量在哪里

于 2013-08-09T03:04:34.250 回答