从头认识java-11.5 扫描输入(2)-scanner的边界与使

页面导航:首页 > 软件编程 > Java编程 > 从头认识java-11.5 扫描输入(2)-scanner的边界与使

从头认识java-11.5 扫描输入(2)-scanner的边界与使

来源: 作者: 时间:2016-01-18 15:52 【

这一章节我们来介绍一下scanner的边界与使用正则表达式扫描。1 scanner的边界上一章节我们提到scanner里面有hasNext方法,可以检测是否还有字符串,其实这个就是边界符,检查字符串的边

这一章节我们来介绍一下scanner的边界与使用正则表达式扫描。

1.scanner的边界

上一章节我们提到scanner里面有hasNext方法,可以检测是否还有字符串,其实这个就是边界符,检查字符串的边界。

 

package com.ray.ch11;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.Scanner;

public class Test {

	private BufferedReader input = new BufferedReader(new StringReader(
			raylee
31
1.77));

	public BufferedReader getInput() {
		return input;
	}

	public void setInput(BufferedReader input) {
		this.input = input;
	}

	public static void main(String[] args) throws IOException {
		Test test = new Test();
		Scanner scanner = new Scanner(test.getInput());
		while (scanner.hasNext()) {
			System.out.println(scanner.nextLine());
		}
	}
}

输出:

 

raylee
31
1.77

 

2.使用正则表达式扫描

很多的时候我们都需要扫描和统计日志情况,而且一般日志都是记录在一个txt文件里面的,那么这个时候正则表达式和scanner的配合就相当有效率了,我们看下面的代码:

 

package com.ray.ch11;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.Scanner;
import java.util.regex.MatchResult;
import java.util.regex.Pattern;

public class Test {

	private BufferedReader input = new BufferedReader(new StringReader(
			127.0.0.12015-12-01
 + 127.0.0.22015-12-03

					+ 127.0.0.312015-12-05

					+ 127.0.0.412015-12-07
 + end
));

	public BufferedReader getInput() {
		return input;
	}

	public void setInput(BufferedReader input) {
		this.input = input;
	}

	public static void main(String[] args) throws IOException {
		Test test = new Test();
		Scanner scanner = new Scanner(test.getInput());
		Pattern pattern = Pattern.compile((\d+[.]\d+[.]\d+[.]\d+) + @
				+ ([a-z]+) + @ + (\d{4}-\d{2}-\d{2}));
		while (scanner.hasNext(pattern)) {
			scanner.next(pattern);
			MatchResult matchResult = scanner.match();
			System.out.println(ip:+matchResult.group(1));
			System.out.println(user:+matchResult.group(2));
			System.out.println(date:+matchResult.group(3));
		}
	}
}

输出:

 

ip:127.0.0.1
user:admin
date:2015-12-01
ip:127.0.0.2
user:ray
date:2015-12-03
ip:127.0.0.31
user:rose
date:2015-12-05
ip:127.0.0.41
user:jack
date:2015-12-07

 

在上面的代码里面有一个非常需要注意地方就是正则表达式的书写,特别是几个小括号,因为通过几个小括号,才可以把字符串分组出来。如果没有小括号,后面的group(1)group(2)将会抛异常。

 

总结:这一章节简单讲述了scanner的边界与使用正则表达式扫描。

 

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<