0
votes

Trouvez l'index d'un non-chiffre à l'aide de Regex en Java

C'est probablement une question facile, mais je n'ai pas été capable de le comprendre. Je veux trouver la lettre suivante (A à Z) dans une chaîne après un certain point de la chaîne. Le résultat que je veux d'ici est pour que l'argent de la chaîne soit "5 $. 00" mais NUM2 apparaît toujours comme -1.

String text = "hello$5. 00Bla bla words that don't matter"

int num1 = text.indexOf('$');
int num2 = text.indexOf("[a-zA-Z]" , num1 + 1); // Always results in -1

String money = text.substring(num1, num2);


4 commentaires

string :: indexof ne prend pas regex comme paramètre


String IndexOf ne prend jamais de regex comme paramètre, il doit s'agir d'une autre chaîne ou une autre chaîne ou une autre marque (Unicode CodePoint), vous devez utiliser de remplacement () ici.


Voir les solutions proposées à un problème similaire ici


Votre spécification pourrait être plus claire. Il ressemble à ce que vous voulez est vraiment le premier caractère alphabétique, car le point et l'espace sont des caractères non chiffres.


3 Réponses :


0
votes

Ceci n'est pas testé, car mon poste de travail n'est pas configuré pour Java 9, mais en utilisant cette version, vous devriez être capable de le faire: xxx

résultat va évaluer à 5 $. 00

Remarque: flux #takewhile est une fonctionnalité Java 9


2 commentaires

Et puis comment utilisez-vous index ?


@Scarywombat Merci pour le commentaire, je me suis principalement concentré sur la question du titre, mais j'ai édité ma réponse pour vous concentrer sur le reste de la question.



-1
votes

Merci pour l'aide de tout le monde. J'ai trouvé un moyen de le faire sans utiliser regex. XXX

Cela pourrait avoir besoin de travailler plus tard, mais il semble fonctionner.


2 commentaires

Hmm, tellement pour vous aider. Quoi qu'il en soit, que se passe-t-il avec le ' Char? Comment gérez-vous le $ ?


J'ai gardé l'int num1 = text.indexof ('$'); Expliquer que la regex ne fonctionnerait pas avec l'index de l'index était en réalité une aide énorme.



1
votes

Pour trouver la première lettre suivant un signe code> code> dollar, à l'aide de REGEX, vous pouvez utiliser le regex suivant: xxx pré>

explication: p>

money = "$5. 00"


0 commentaires