首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

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

2012-11-23 
文字扫描工具--java.util.ScannerA simple text scanner which can parse primitive types and strings us

文字扫描工具--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?nextmethods may block waiting for further input. Whether a?hasNext?method blocks has no connection to whether or not its associated?next?method will block.

热点排行