用Java中的等效字符替换HTML代码
目前我正在努力在java中转换具有等效字符的HTML代码。 我需要将以下代码转换为字符。
è - è ® - ® & - & ñ - ñ & - &
我尝试使用正则表达式模式
(&#x)([\\d|\\w]*)([\\d|\\w]*)([\\d|\\w]*)([\\d|\\w]*)(;)
当我调试时, matcher.find()
给了我true
但是控件跳过我编写转换代码的循环。 不知道那里发生了什么。
另外,有没有办法优化这个正则表达式?
任何帮助表示赞赏。
例外
java.lang.NumberFormatException: For input string: "x26" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at org.apache.commons.lang.Entities.unescape(Entities.java:683) at org.apache.commons.lang.StringEscapeUtils.unescapeHtml(StringEscapeUtils.java:483)
另外,有没有办法优化这个正则表达式?
是的, 不要使用正则表达式执行此任务,请使用Apache commons lang中的 Apache StringEscapeUtils :
import org.apache.commons.lang.StringEscapeUtils; ... String withCharacters = StringEscapeUtils.unescapeHtml(yourString);
JavaDoc说:
Unescapes包含实体转义的字符串转义为包含与转义对应的实际Unicode字符的字符串。 支持HTML 4.0实体。
例如,字符串
"<Français>"
将成为"
" 如果实体未被识别,则将其保留,并逐字插入结果字符串中。 例如
">&zzzz;x"
将变为">&zzzz;x"
。
所有其他可能性或现有的util方法之一可以是spring-web的org.springframework.web.util.HtmlUtils.htmlUnescape
。
自包含Groovy脚本中的示例用法:
@Grapes( @Grab(group='org.springframework', module='spring-web', version='4.3.0.RELEASE') ) import org.springframework.web.util.HtmlUtils println HtmlUtils.htmlUnescape("La élite del tenis no teme al zika y jugará en Río")