Ok, je veux vérifier si une chaîne a =
comme premier caractère et suivi d'un nombre quelconque, s'il y a un espace entre =
& nombre alors c'est aussi ok.
Ok, voici l'exemple,
String s="=2245"; --> return true
String s="= 545"; --> return true
String s="= 22"; --> return true
String s="= m 545"; --> return false
String s="=m545"; --> return false
Alors voici ce que j'ai fait
if(s.matches("=[0-9]+")){
return true;
}
Cela fonctionnera s'il n'y a pas d'espace entre =
& nombre
J'ai donc changé pour:
if(s.matches("=\s[0-9]+")){
return true;
}
Ensuite, cela fonctionnera s’il ya 1 espace entre le =
& nombre & ne fonctionnera pas dans d’autres cas.
Alors, comment y remédier?
Réponses:
5 pour la réponse № 1"=\s*\d+"
le *
signifie "zéro répétition ou plus", donc cela fonctionnera si les espaces sont présents ou non le d
est une autre façon d'écrire [0-9]
.
2 pour la réponse № 2
Vous pouvez utiliser cette regex:
^=[ ]*[0-9]+$
La démo vous montre ce qui correspond et ne correspond pas.
Explication
- le
^
anchor affirme que nous sommes au début de la chaîne =
correspond au littéral=
[ ]*
correspond aux espaces optionnels. Vous n’avez pas besoin des crochets mais c’est plus facile à lire.[0-9]+
correspond à un ou plusieurs chiffres- le
$
anchor affirme que nous sommes à la fin de la chaîne
En Java:
Pattern regex = Pattern.compile("^=[ ]*[0-9]+$");
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
ResultString = regexMatcher.group();
}
1 pour la réponse № 3
if(s.matches("=\s*\d+")){
return true;
}
Vous devriez être utiliser * cela signifie "zéro ou plus".
Vérifie ça lien
0 pour la réponse № 4
Essayer avec =s*d+
s*
indique les espaces (n, r, t, f, and " ")
(0 ou plus de fois (correspondant au plus grand nombre possible))