hasNext(String pattern)
sólo se devuelve true
si el siguiente token coincide con el patrón. En su caso, "asda"
es el siguiente token, y que no coincide con "[A-Z]+"
. La documentación es clara en que "[el] escáner no avanza más allá de cualquier entrada".
Si cambia el patrón de "[A-Za-z]+"
, entonces se obtendría tres fichas, que pueden ser lo que pretende.
Si, de hecho, sólo desea obtener fichas que coinciden "[A-Z]+"
, a continuación, puede realizar cualquiera de los siguientes:
- simplemente descartar fichas no coincidentes
useDelimiter("[^A-Z]+")
, entonces simplemente invocar next()
- utilizar
skip("[^A-Z]+")
- uso
findInLine("[A-Z]+")
Consejo: si el rendimiento es crítico, que te gustaría utilizar los precompilados Pattern
sobrecargas de estos métodos.
Consejo: tenga en cuenta que "Xooo ABC"
tiene dos "[A-Z]+"
coincidencias. Si esto no es lo que quieres, entonces la expresión regular tendrá que ser un poco más complicada. O siempre puedes descartar los tokens que no coinciden.