Według the javadoc for java.util.Scanner.skip
ta metoda:Scanner.skip dokumentację dotyczącą ograniczniki
Przejście który pasuje do określonego wzorca, ignorowanie ograniczniki.
Ale jestem mylić, co wyrażenie „ignorując delimeters” oznaczają, ponieważ następujący kod zgłasza wyjątek przy użyciu Java 7 w Eclipse:
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!
}
}
nie wydaje się ignorować separatory gdy przeskoki, jak pokazuje linia A. Jednak linia C wydaje się działać, chociaż jej dokumentacja używa tego samego wyrażenia "ignorowanie ograniczników". Czy w tym przypadku nie mam pewności co do ich koncepcji "ignorowania ograniczników" lub czy jest to faktyczny błąd? czego mi brakuje?
Rozumiem twoje wyjaśnienie. Być może powinni wyjąć wyrażenie "ignorowanie ograniczników" i powiązać z pojęciem "zakotwiczenia" Matchera, ponieważ byłem niejasno świadom tego pojęcia. Zakładałem, że "kotwica" wskazywałaby na następny symbol z powodu tego mylącego zwrotu. Zgodziłbyś się? –
Zakotwiczenie to kolejna postać, którą odczyta "Skaner". W tym kontekście 'Scanner.skip()' jest semantycznie bliższy 'Matcher.matches()' niż 'Matcher.find()'. –