/ / Scanner.hasNext Correspondance de chaîne en Java - java, regex, analyse, texte, java.util.scanner

Scanner.hasNext Chaîne correspondant à Java - Java, regex, analyse, texte, java.util.scanner

J'analyse un fichier texte contenant du texte, comme indiqué ci-dessous:

Level1
Some-text-here
Level2
Some-text-here
Level3
Some-text-here

J'ai implémenté le code où il analyse le fichier et tente de compter le nombre d'occurrences de "Level" dans le fichier. Voici comment je le fais:

Scanner scanner = new Scanner(new File(inPath));
Pattern p = Pattern.compile("Level");
while(scanner.hasNext()) {
if(scanner.hasNext(p))  {
++lastLevelCreatedWas;
}
scanner.next();
}

Cependant, la condition "si" n'est jamais touchée carhasNext (p) tente de trouver la correspondance exacte de "Level" et ignore simplement les mots "Level1", "Level2" et ainsi de suite. Comment suis-je censé faire en sorte qu'il considère un mot contenant le mot clé "Niveau"?

Réponses:

3 pour la réponse № 1

Je pense que tu cherches Scanner.useDelimiter

Essaye ça :

Scanner scanner = new Scanner(new File(inPath));
scanner.useDelimiter("Level");
while(scanner.hasNext()) {
++lastLevelCreatedWas;
scanner.next();
}

Tout en allant au prochain jeton "Niveau" comme vous le souhaitez.


2 pour la réponse № 2

hasNext, getNext et d'autres méthodes similaires ne fonctionnent que lorsque le délimiteur est défini.

Invoquer useDelimiter méthode pour définir le délimiteur sur l’instance Scanner.