第十三章 字符串 (四)之Scanner类
一、Scanner简述
Scanner扫描器类本质上是由正则表达式实现的,可以接受任何能产生数据的数据源对象,默认以空白符进行分词(包括\n等),使用各种next方法进行扫描匹配,获取匹配的数据。
二、使用实例
1、示例一:从控制台读取数据
import java.util.*; public class Demo9 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String s = scanner.nextLine(); System.out.println(s); scanner.close(); } }
输出结果:
Hello world(输入)
Hello world(输出)
结果说明:Sytem.in一般情况都会和Scanner类配合起来使用。
2、示例二:指定定界符
import java.util.Scanner; public class Demo10 { public static void main(String[] args) { // TODO Auto-generated method stub String s = "1 good 2 good nice good"; Scanner scanner = new Scanner(s); scanner.useDelimiter("\\sgood\\s"); System.out.println(scanner.nextInt()); System.out.println(scanner.nextInt()); System.out.println(scanner.next()); scanner.close(); } }
输出结果:
1
2
nice good
结果说明:可以使用useDelimiter()方法更改默认的分隔符。
3、示例三:用正则表达式扫描
import java.util.Scanner; import java.util.regex.MatchResult; public class Demo11 { public static void main(String[] args) { String s = "xiaoming2001/9/8\n" + "dahuang2005/11/9"; Scanner scanner = new Scanner(s); String pattern = "(\\w+g)\\d+/(\\d+/\\d+)"; while(scanner.hasNext(pattern)) { scanner.next(pattern); MatchResult m = scanner.match(); String name = m.group(1); String birthday = m.group(2); System.out.println(name + " birthday : " + birthday); } scanner.close(); } }
输出结果:
xiaoming birthday : 9/8
dahuang birthday : 11/9
结果说明:match()返回最后一次扫描操作(如,next(String pattern) )的匹配结果。