第十三章 字符串 (四)之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) )的匹配结果。

 

posted @ 2019-09-06 20:44  卑微芒果  Views(265)  Comments(0Edit  收藏  举报