Scanner简介

来源:互联网 发布:太原公交查询软件 编辑:程序博客网 时间:2024/06/11 06:11
Scanner(jdk API) :一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
package test;import java.io.File;import java.io.FileNotFoundException;import java.util.Scanner;import java.util.regex.MatchResult;public class TestScanner {public static void main(String[] args) throws FileNotFoundException {// 键盘输入Scanner sc = new Scanner(System.in);System.out.println(sc.nextInt());System.out.println("---------------");// 文本扫描Scanner sc2 = new Scanner(new File("D://1.txt"));while (sc2.hasNextDouble()) {System.out.println(sc2.nextDouble());}System.out.println("---------------");// 正则解析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();System.out.println("---------------");// 正则-匹配组String input2 = "1 fish 2 fish red fish blue fish";Scanner s2 = new Scanner(input2);s2.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");MatchResult result = s2.match();for (int i = 1; i <= result.groupCount(); i++)System.out.println(result.group(i));s.close();}}
//output1111---------------12.212.20.11345.12111.1---------------12redblue---------------12redblue
再来个例子,根据pattern字符串来匹配
package test;import java.util.Scanner;import java.util.regex.MatchResult;public class TestScanner2 {public static void main(String[] args) {String data = "127.0.0.1@21/10/2005\n" +      "128.0.0.11@3/11/2006\n" +   "129.132.111.111@4/2/2007\n" +   "130.0.0.1@15/1/2008\n" +   "[Next log section with different format]";Scanner s = new Scanner(data);String pattern = "(\\d+[.]\\d+[.]\\d+[.]\\d+)@(\\d{1,2}/\\d{1,2}/\\d{4})";while(s.hasNext(pattern)) {s.next(pattern);MatchResult mr = s.match();System.out.format("ip = %-15s, data= %10s\n", mr.group(1), mr.group(2));}}}
//outputip = 127.0.0.1      , data= 21/10/2005ip = 128.0.0.11     , data=  3/11/2006ip = 129.132.111.111, data=   4/2/2007ip = 130.0.0.1      , data=  15/1/2008

总结:1)多种输入,File,input,System.in,String等

            2)与正则结合使用

            3)实现了Iterator接口