Theo the javadoc for java.util.Scanner.skip
, phương pháp này:Scanner.skip tài liệu liên quan đến delimiters
bỏ qua đầu vào phù hợp với mô hình quy định, phớt lờ delimiters.
Nhưng tôi bối rối như những gì các cụm từ 'phớt lờ delimeters' có nghĩa là vì đoạn mã sau ném một ngoại lệ sử dụng Java 7 trong 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!
}
}
Nó dường như không bỏ qua delimiters khi bỏ qua, như được minh họa bởi Line A. Tuy nhiên Line C xuất hiện để hoạt động mặc dù tài liệu của nó sử dụng cùng cụm từ "bỏ qua dấu phân tách". Tôi không rõ ràng về khái niệm "bỏ qua các dấu phân cách" trong trường hợp này hay đây có phải là lỗi thực sự không? Tôi đang thiếu gì?
Tôi hiểu lời giải thích của bạn. Có lẽ họ nên đưa ra cụm từ 'bỏ qua dấu phân cách' và liên kết với khái niệm của Matcher về "neo đậu" vì tôi chỉ mơ hồ nhận thức được khái niệm đó. Tôi cho rằng "neo" sẽ trỏ đến mã thông báo tiếp theo vì cụm từ gây hiểu lầm đó. Bạn có đồng ý không? –
Neo là ký tự tiếp theo mà 'Máy quét' sẽ đọc. Vì vậy, trong bối cảnh này, 'Scanner.skip()' là ngữ nghĩa gần hơn với 'Matcher.matches()' hơn là 'Matcher.find()'. –