我一直在使用StringEscapeUtils.escapeHTML来转义网址。是否有类似的东西可以找出字符串是否已被转义?
答案 0 :(得分:6)
原则上这是不可能的,因为每个转义的字符串同时是未转义的字符串,例如"a>b"
可以是"a>b"
的转义版本,也可以是转义前的文字字符串"a>b"
。
答案 1 :(得分:2)
不是我所知道的,但你自己很容易做到:
public boolean isEscaped(String url) {
return !url.equals(StringEscapeUtils.unEscapeHTML(url));
}
请注意,决定是否转义随机字符串是不可能的,因为@themel注意到,如果您使用随机字符串尝试此操作,则可能会出现大量误报。但是我假设你至少可以控制你的字符串在这里的样子。
答案 2 :(得分: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);
}