199 votes

Java ; Remplacer une chaîne de caractères (projet scolaire) ?

Dans le cadre d'un projet scolaire, je dois remplacer une chaîne de caractères à partir du formulaire :

5 * x^3 - 6 * x^1 + 1

à quelque chose comme :

5x<sup>3</sup> - 6x<sup>1</sup> + 1

Je pense que cela peut être fait avec des expressions régulières, mais je ne sais pas encore comment le faire.

Pouvez-vous me donner un coup de main ?

P.S. La mission actuelle est d'implémenter une application Java de traitement des polynômes, et je l'utilise pour passer polynomial.toString() du modèle à la vue, et je veux l'afficher en utilisant des balises html d'une manière attrayante.

0voto

Ryan Graham Points 4734

Vous devrez vous pencher sur la capture dans les expressions rationnelles pour gérer l'insertion du 3 dans ^3.

0voto

user5915163 Points 21

Essayez ceci, ce n'est peut-être pas la meilleure méthode, mais elle fonctionne.

String str = "5 * x^3 - 6 * x^1 + 1";
str = str.replaceAll("(?x)(\\d+)(\\s+?\\*?\\s+?)(\\w+?)(\\^+?)(\\d+?)", "$1$3<sup>$5</sup>");
System.out.println(str);

0voto

Geoffrey Ritchey Points 129

Jetez un coup d'œil à antlr4. Il vous permettra d'aller beaucoup plus loin dans la création d'une structure arborescente que les expressions régulières seules.

https://github.com/antlr/grammars-v4/tree/master/calculator (la calculatrice.g4 contient la grammaire dont vous avez besoin)

En bref, vous définissez la grammaire pour analyser une expression, vous utilisez antlr pour générer du code Java et vous ajoutez des callbacks pour gérer l'évaluation lors de la construction de l'arbre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X