/*
* 本程序演示Scanner类的应用。
* Scanner是JDK1.5新增的一个类,位于java.util包下,是一个用于扫描输入文本的新的实用程序。
* 借助于使用正则表达式和从输入流中检索特定类型数据项,Scanner类可以针对任何要处理的文本内容编写自定义的语法分析器。
*/
package com.lwj.demo;
import java.io.*;
import java.util.*;
import java.util.regex.*;
public class ScannerDemo {
public static void main(String[] args) throws Exception {
//Scanner的第一种应用:用默认的分界符扫描一个字符串,并按照类型依次读出来
System.out.println("————————Scanner的第一种应用—————————");
Scanner s=new Scanner("20 28.2 true Hi");
System.out.println(s.nextInt());
System.out.println(s.nextDouble());
System.out.println(s.nextBoolean());
System.out.println(s.next());
//Scanner的第二种应用:用指定的分界符(可以是一个正则表达式)扫描一个字符串,并按照类型依次读出来
System.out.println("————————Scanner的第二种应用—————————");
String input = "1 fish 2 fish red fish blue fish";
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());
//Scanner的第三种应用:用指定的分界符扫描一个文件,并按照相应的格式分析
/*
* props.txt内容
<entry key="java.runtime.name">Java(TM) SE Runtime Environment</entry>
<entry key="sun.boot.library.path">C:/Java/jre6/bin</entry>
<entry key="java.vm.version">14.0-b16</entry>
<entry key="java.vm.vendor">Sun Microsystems Inc.</entry>
<entry key="java.vendor.url">http://java.sun.com/</entry>
<entry key="path.separator">;</entry>
<entry key="java.vm.name">Java HotSpot(TM) Client VM</entry>
<entry key="file.encoding.pkg">sun.io</entry>
*/
System.out.println("————————Scanner的第三种应用—————————");
s=new Scanner(new File("props.txt"))
.useDelimiter(System.getProperty("line.separator"));
while (s.hasNext()) {
System.out.println(Parse(s.next()));
}
s.close();
}
public static String Parse(String string) {
Scanner s = new Scanner(string);
s.findInLine("<entry key=/"([//w.]*)/">([//w.:()-_/~//s]*)</entry>");
MatchResult result = s.match();
String str = result.group(1) + "/t" + result.group(2);
s.close();
return str;
}
}
运行结果为:
————————Scanner的第一种应用—————————
20
28.2
true
Hi
————————Scanner的第二种应用—————————
1
2
red
blue
————————Scanner的第三种应用—————————
java.runtime.name Java(TM) SE Runtime Environment
sun.boot.library.path C:/Java/jre6/bin
java.vm.version 14.0-b16
java.vm.vendor Sun Microsystems Inc.
java.vendor.url http://java.sun.com/
path.separator ;
java.vm.name Java HotSpot(TM) Client VM
file.encoding.pkg sun.io