現在、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 StringEscapeUtils を使用 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つまたは既存のtilメソッドは、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")