Bonjour,
Il arrive quelques fois que les langages les plus aboutis soient brutalement pénibles. Ce n'est pas fréquent avec Java, mais cela arrive parfois.
replaceFirst et replaceAll sont les deux seules fonctions proposées pour remplacer des chaines de caractères dans des objets String, et lorsqu'on les voit capables de renvoyer un PatternSyntaxException, l'on a compris son malheur. Elles utilisent les expressions régulières.
Un programme qui s'exécute devra porter mille attentions à ce qu'il veut comparer.
Par exemple, un $ présent dans la chaine? Un sparadrap "\\$" ou "\\\\\\$" sera requis. Sinon: exception.
Il existe quantité d'autres règles tirées des expressions régulières.
Donc, avant de chercher une chaine A dans une chaine B que l'on vous a transmises, vérifiez bien par programme que A ne contient pas ceci, ni B cela. Sinon, tant pis pour vous.
Vous passerez plus de temps à détecter les formes potentiellement mal interprétables... qu'à faire la recherche que vous vouliez.
N'est-ce pas à vos yeux un gâchis d'efforts?
Pourquoi Java n'a t-il pas proposé en plus une série de fonctions qui seraient incapables de rater parce qu'elles se limiteraient à remplacer des occurences de chaine dans une autre chaine, sans chercher à partir dans des exercices de style compliqués qui n'intéressent pas tous les développeurs?
Etait-il impossible de faire une API simple qui fonctionnait tout le temps?
Quelle justification ont-il eu d'être passé par le prérequis des expressions régulières pour la moindre recherche dans une chaine?
Cordialement,
Grunt.
Partager