/ / Comprendre la sortie de findWithinHorizon - java, string, java.util.scanner

Comprendre la sortie de findWithinHorizon - java, string, java.util.scanner

Tandis que en jouant avec Scanner classe, j’ai écrit ce petit morceau de code pour voir comment findWithinHorizon se comporte toutefois, je ne peux pas comprendre exactement pourquoi certains modèles manquent dans la sortie.

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;


public class Main {

public static void main(String[] args) throws FileNotFoundException {

FileInputStream FS = new FileInputStream("dummy.txt");
Scanner scanner = new Scanner(FS);
int counter = 0;
while (scanner.hasNext()) {
counter++;
String P = scanner.findWithinHorizon(scanner.next(),100);
if (P!=null)
System.out.println(counter+" "+P);
}
}
}

Et mon dummy.txt le fichier a ce texte:

En chemin, elle en rencontra un exemplaire. La copie a averti le petit texte aveugle, que d'où il vient aurait été réécrit mille fois et tout ce qui restait de son origine serait le mot "et" et le petit texte aveugle devrait faire demi-tour et revenir à son propre, sûr pays.

Le code ci-dessus est imprimé

2 her
3 e
4 from
5 its

c'est assez clair. Ce que je ne comprends pas, c’est pourquoi le mot copie n'est pas dans la sortie? En outre, tout en essayant de comprendre les mécanismes de cette méthode, je me suis rendu compte que l’horizon correspond en réalité au nombre de caractères (de Javadoc: pas de délimiteurs). Mais qu'en est-il scanner.next()? Est-ce que cela déplace l'itérateur au caractère suivant ou au mot suivant? Si le premier, comment il y a mot (par exemple sa) est dans les résultats?

Réponses:

0 pour la réponse № 1

1) La raison pour laquelle "copie" n’est pas présente est parce que Scanner.findWithinHorizon() avance également le jeton. Voir docs http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

"Si le motif est trouvé, le scanner avance au-delà de l'entrée correspondante et renvoie la chaîne correspondant au motif."

Ainsi, quand "elle" est trouvée, elle saute au-delà du jeton "copie" d'origine.

2) Scanner.next() déplace l'itérateur sur le prochain jeton (comme défini par "" par défaut)

3) "elle" se trouve à partir de "sa" e.