【问题标题】:StringEscapeUtils find out if string is escapedStringEscapeUtils 找出字符串是否被转义
【发布时间】:2012-08-28 23:00:55
【问题描述】:

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

【问题讨论】:

  • 你如何判断一个字符串是否已经被转义?
  • 没有,没见过。一个丑陋的解决方法可能是取消转义并检查差异(长度......)

标签: java string escaping apache-commons


【解决方案1】:

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

【讨论】:

  • >可以转义为>,可以转义为>
【解决方案2】:

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

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

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

【讨论】:

  • 是的,我已经把它归结为:StringEscapeUtils.escapeHtml(StringEscapeUtils.unescapeHtml(href)) 每次都逃避它来逃避它似乎很愚蠢:p
【解决方案3】:

如果您只是想在获得纯 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);
}

【讨论】:

    猜你喜欢
    • 2017-07-08
    • 2017-09-03
    • 2011-01-18
    • 2010-10-21
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    相关资源
    最近更新 更多