文字扫描工具--java.util.Scanner

A simple text scanner which can parse primitive types and strings using regular expressions.

A  Scanner   breaks its input into tokens using a delimiter pattern, which by default matches whitespace. The resulting tokens may then be converted into values of different types using the various  next   methods.

For example, this code allows a user to read a number from  System.in :

     Scanner sc = new Scanner(System.in);
     int i = sc.nextInt();
 

As another example, this code allows  long   types to be assigned from entries in a file  myNumbers :

      Scanner sc = new Scanner(new File("myNumbers"));
      while (sc.hasNextLong()) {
          long aLong = sc.nextLong();
      }

The scanner can also use delimiters other than whitespace. This example reads several items in from a string:

     String input = "1 fish 2 fish red fish blue fish";
     Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
     System.out.println(s.nextInt());
     System.out.println(s.nextInt());
     System.out.println(s.next());
     System.out.println(s.next());
     s.close(); 

prints the following output:

     1
     2
     red
     blue 

The same output can be generated with this code, which uses a regular expression to parse all four tokens at once:

     String input = "1 fish 2 fish red fish blue fish";
     Scanner s = new Scanner(input);
     s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
     MatchResult result = s.match();
     for (int i=1; i<=result.groupCount(); i++)
         System.out.println(result.group(i));
     s.close(); 

The  default whitespace delimiter   used by a scanner is as recognized by  java.lang.Character .isWhitespace . Thereset   method will reset the value of the scanner's delimiter to the default whitespace delimiter regardless of whether it was previously changed.

A scanning operation may block waiting for input.

The  next   and  hasNext   methods and their primitive-type companion methods (such as  nextInt   and  hasNextInt ) first skip any input that matches the delimiter pattern, and then attempt to return the next token. Both  hasNext   and  next methods may block waiting for further input. Whether a  hasNext   method blocks has no connection to whether or not its associated  next   method will block.

猜你喜欢

转载自san-yun.iteye.com/blog/1722190