Nach the javadoc for java.util.Scanner.skip
diese Methode:Scanner.skip Dokumentation über Trennzeichen
Skips Eingang, der mit dem angegebenen Muster übereinstimmt, ignoriert delimiters.
Aber ich bin verwirrt, was das Wort bedeutet ‚Trennzeichen ignorieren‘, da der folgende Code eine Ausnahme mit Hilfe von Java 7 in Eclipse wirft:
import java.util.Scanner;
public class Example
{
public static void main(String [] args)
{
Scanner sc = new Scanner("Hello World! Here 55");
String piece = sc.next();
sc.skip("World"); // Line A throws NoSuchElementException, vs.
sc.skip("\\sWorld"); // Line B works!
sc.findInLine("World"); // Line C works!
}
}
Es scheint nicht, Trennzeichen zu ignorieren, wenn das Überspringen, Wie Zeile A zeigt. Zeile C scheint jedoch zu funktionieren, obwohl in ihrer Dokumentation die gleiche "ignoring delimiters" -Phrase verwendet wird. Ist mir in diesem Fall unklar, wie man "Begrenzer ignorieren" versteht, oder ist das ein echter Bug? Was vermisse ich?
Ich verstehe Ihre Erklärung. Vielleicht sollten sie den Ausdruck "ignoring delimiters" herausnehmen und auf Matcher's Konzept des "verankerns" verweisen, da ich mir dieses Konzept nur vage bewusst war. Ich nahm an, dass der "Anker" wegen dieser irreführenden Phrase auf das nächste Token zeigen würde. Würdest du zustimmen? –
Der Anker ist das nächste Zeichen, das der 'Scanner' liest. In diesem Zusammenhang ist "Scanner.skip()" semantisch näher an "Matcher.matches()" als an "Matcher.find()". –