2

我一直在使用 StringEscapeUtils.escapeHTML 来转义 URL。是否有类似的东西可以找出字符串是否已经转义?

4

3 回答 3

6

这在原则上是不可能的,因为每个转义字符串同时是一个未转义的字符串,例如"a>b"可以是转义版本"a>b" 或只是转义之前的文字字符串"a>b"

于 2012-09-04T09:54:34.487 回答
3

不是我知道的,但自己做一个很容易:

public boolean isEscaped(String url) {
    return !url.equals(StringEscapeUtils.unEscapeHTML(url));
}

请注意,正如@themel 所指出的那样,决定是否对随机字符串进行转义是不可能的,如果您尝试使用随机字符串进行此操作,您可能会得到很多误报。但是我假设你至少可以控制你的字符串在这里的样子。

于 2012-09-04T09:53:35.407 回答
0

如果您只是想转义任何字符串,直到获得纯 HTML 标记,请尝试以下递归方法:

    public static String unescapeHtml(String string) {
    if (org.apache.commons.lang3.StringUtils.isBlank(string)) {
        return "";
    }
    String unescapedString = StringEscapeUtils.unescapeHtml(string);
    return string.equals(StringEscapeUtils.unescapeHtml(string)) ? unescapedString : unescapeHtml(unescapedString);
}
于 2019-01-31T16:25:34.280 回答