hasNext(String pattern)
renvoie uniquement true
si le jeton suivant correspond au modèle. Dans votre cas, "asda"
est le jeton suivant, et cela ne correspond PAS "[A-Z]+"
. La documentation est claire en ce sens que "le scanner ne dépasse aucune entrée".
Si vous modifiez le motif en "[A-Za-z]+"
, vous obtiendrez trois jetons, ce qui correspond peut-être à vos attentes.
Si, en fait, vous voulez seulement obtenir des jetons qui correspondent "[A-Z]+"
, alors vous pouvez faire une des opérations suivantes:
- simplement jeter des jetons qui ne correspondent pas
useDelimiter("[^A-Z]+")
, puis appelez simplement next()
- utiliser
skip("[^A-Z]+")
- utilisation
findInLine("[A-Z]+")
Astuce: si les performances sont critiques, vous devez utiliser les surcharges préchargées Pattern
de ces méthodes. Astuce: gardez à l'esprit que "Xooo ABC"
a deux correspondances "[A-Z]+"
. Si ce n'est pas ce que vous voulez, alors l'expression rationnelle devra être un peu plus compliquée. Ou vous pouvez toujours supprimer les jetons non correspondants.