StringEscapeUtils查明字符串是否已转义



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

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

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

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

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

如果您只是试图转义任何字符串,直到获得纯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);
}

最新更新