Actuellement, je travaille sur la conversion de codes HTML avec des caractères équivalents en Java. Je dois convertir le code ci-dessous en caractères.
è - è
® - ®
& - &
ñ - ñ
& - &
J'ai essayé d'utiliser le motif regex
(&#x)([\\d|\\w]*)([\\d|\\w]*)([\\d|\\w]*)([\\d|\\w]*)(;)
Lorsque je débogue, matcher.find()
me donne true
mais le contrôle ignore la boucle dans laquelle j'ai écrit le code de conversion. Je ne sais pas ce qui se passe là-bas.
Aussi, y a-t-il un moyen d'optimiser cette regex?
Toute aide est appréciée.
Exception
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)
Aussi, y a-t-il un moyen d'optimiser cette regex?
Oui, ne pas utiliser regex pour cette tâche, utilisez Apache StringEscapeUtils from Apache commons lang :
import org.Apache.commons.lang.StringEscapeUtils;
...
String withCharacters = StringEscapeUtils.unescapeHtml(yourString);
JavaDoc dit:
Unescapes une chaîne contenant une entité échappe à une chaîne contenant Les caractères Unicode réels correspondant aux échappements. Prend en charge les entités HTML 4.0.
Par exemple, la chaîne
"<Français>"
deviendra"<Français>"
Si une entité n'est pas reconnue, elle est laissée seule et insérée textuellement dans la chaîne de résultat. par exemple.
">&zzzz;x"
deviendra">&zzzz;x"
.
Une des possibilités ou méthodes util existantes pourrait être org.springframework.web.util.HtmlUtils.htmlUnescape
de spring-web.
Exemple d'utilisation dans un script Groovy autonome:
@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")