Je veux vérifier si la chaîne que je prends d'un champ de texte A une virgule, afin de le laisser tomber et de demander une nouvelle valeur avec DOT.
J'essaie d'utiliser P>
^[1-9,]+$
9 Réponses :
Vous n'avez pas besoin de forcer des expressions régulières sur ce problème. Un simple textetestar.indexof (',') code> va faire. P>
Je ne suis pas d'accord. Mieux maîtriser et coller cet outil nécessaire que jamais Fuddle avec indexof code> et amis.
@ user946850 Un véritable maître utilise tous les instruments disponibles avec une grâce égale. S'il s'agissait de rubis ou de Perl, il serait idiomatique de tout gérer avec Regexps, mais à Java Regex n'est pas un citoyen de première classe.
Que faites-vous si la prochaine exigence au code est de vérifier si elle est faite uniquement de chiffres et d'un point? Ou si vous voulez vérifier également pour d'autres caractères? Ou ... comparer les efforts pour changer l'expression régulière avec l'alternative: utilisez d'abord l'outil "Simple" (ce qui se passe à nouveau si aucun match n'est trouvé? -1? Exception? Attendons l'API ...) Juste pour découvrir que vous avez besoin de "l'outil" de toute façon.
@ user946850 et que faites-vous si la prochaine exigence est d'analyser une structure récursive?
Je branche mon regex dans un générateur d'analyseurs sans contexte et commence à partir de là. Que fais-tu?
@ user946850 à peu près la même chose que vous, évidemment. Si je n'avais pas besoin de la regex avant, j'en aurai bien en aura besoin avec l'analyseur.
Laissez-moi expliquer ma passion à ce sujet. Une fois, j'ai dû parcourir le code Java qui a apporté une utilisation intensive des idiomes suggéré ici pour analyser la sortie HTML. Le code de quelqu'un d'autre, apparemment, il ne savait pas utiliser l'expression régulière (ou une bibliothèque HTML, à cette affaire). Regexp est, ainsi que le contrôle de la version, l'un des "DOIT sait" si vous faites le traitement du texte - mieux commencer tôt et avec des exemples simples.
@ user946850 Si vous avez le malheur de maintenir le code qui analyse du code HTML, soit par le code de code HARDSCOPS, soit indexof code> S et amis, vous êtes à peu près le même problème. Stackoverflow est déjà rempli d'histoires d'horreur sur les utilisateurs naïfs essayant de travailler via HTML à l'aide de "l'outil" --- car c'est le seul outil qu'ils connaissent.
Quoi qu'il en soit, je suppose que vous avez déjà concédé que l'on utilise le bon outil pour le bon travail (et suffisamment pas b> n'utilise pas Regexfs comme "l'outil"), qui est le point que vous avez en désaccord avec au début. .
Le premier affirme que toute la chaîne est composée de virgules uniquement. Le second affirme que la chaîne est composée de chiffres (autres que Notez que vous n'avez pas besoin 0 code>) et des virgules, mais n'exige pas un spécifique d'entre eux. Vous pouvez utiliser ceci: ^ ... $ code> lorsque vous utilisez correspondant code> (car ils sont implicites ). Mais un simple index de la solution code> lorsque Marko's ou Yentup est meilleur de toute façon. P> p>
Solution facile et juste
juste faire textesTestar.Contains (",") code> p>
Vous n'avez pas besoin de regex pour cela:
textTestAr.trim().replace(',','.');
Le caret ^ code> correspond au début du texte. [] + code> correspond à un nombre arbitraire de virgules. Ce dont vous avez besoin, c'est quelque chose à ignorer tout avant et après l'article que vous recherchez: ^.*[,].*$
Quelle est l'utilisation de $ ici lorsque vous avez expliqué d'autres éléments.
juste faire
si (textesTestar.Contains (",")) System.out.println ("Ça fait!"); Code> P>
public boolean hasComma(String string) {
if ( string.indexOf(",") > -1) {
return true;
}
return false;
}
Attends, ce n'était pas JavaScript? O_o
Je vais aller directement à répondre à cela avec regex, mettre une ou une combinaison d'alphabets, de symboles ou de numéros à l'intérieur de // code> et il va essayer de le faire correspondre spécifiquement. p> p>
Quel est le problème avec
matchs (",") code>?@Djechlin que
correspond à code> nécessite correspondre à la chaîne entière