目前我正致力于在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)
答案 0 :(得分:26)
另外,有没有办法优化这个正则表达式?
是,不使用正则表达式执行此任务,请使用StringEscapeUtils中的Apache Apache commons lang:
import org.apache.commons.lang.StringEscapeUtils;
...
String withCharacters = StringEscapeUtils.unescapeHtml(yourString);
JavaDoc说:
将包含实体转义符的字符串转义为包含的字符串 与转义对应的实际Unicode字符。支持 HTML 4.0实体。
例如,字符串
"<Français>"
将变为"<Français>"
如果实体无法识别,则将其保留,并逐字插入结果字符串。例如
">&zzzz;x"
将成为">&zzzz;x"
。
答案 1 :(得分:1)
所有其他可能性或现有的 util 方法之一可能是spring-web&#39; 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")