Scanner类的学习
来源:互联网 发布:python 库安装 编辑:程序博客网 时间:2024/06/01 09:22
java.util包
1)首先记住它的8中构造方法同PrintWriter类Scanner类同样可以直接对文件进行操作
Scanner(File source) 构造一个新的 Scanner,它生成的值是从指定文件扫描的,底层平台的默认字符集转换成字符。
Scanner(File source, String csn)指定字符集 。
但如果用String的话是不能指定字符集的
Scanner(String source) 构造一个新的 Scanner,它生成的值是从指定字符串扫描的,Scanner的这个构造方法允许它能作为扫描器。
注意同PrintWriter的区别,若想指定字符集就必须将目录或文件转换成File对象。不同于PrintWriter()的还有当以流作为输入对象时,他是可以指定字符集的
Scanner(InputStream source) 构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。
Scanner(InputStream source, String charsetName) 构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。
还有Scanner能够将实现Readable,ReadableByteChannel接口的类作为参数
Scanner(Readable source) 构造一个新的 Scanner,它生成的值是从指定源扫描的。
Scanner(ReadableByteChannel source) 构造一个新的 Scanner,它生成的值是从指定信道扫描的。
Scanner(ReadableByteChannel source, String csn) 构造一个新的 Scanner,它生成的值是从指定信道扫描的。
2)Scanner类实现了Iterator接口
所以它有boolean hasNext()方法
Object next()方法
void remove()方法
3)常用方法
1.useDelimiter()【useDelimiter使用定界符的意思】将Scanner类的分隔模式设置为指定模式,这个方法让Scanner对象成为了扫描器(参见API)
例如:
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();
输出为:
1 2 red blue补充:\s——代表任何空白字符
\S——代表任何非空白字符
以下代码使用正则表达式同时解析所有的 4 个标记,并可以产生与上例相同的输出结果:
2.下面的方法和DataInputStream中的方法readXxx()类似String input = "1 fish 2 fish red fish blue fish"; Scanner s = new Scanner(input); s.findInLine("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)"); MatchResult result = s.match(); for (int i=1; i<=result.groupCount(); i++) System.out.println(result.group(i)); s.close();补充:\d——代表任何数字字符,即[0-9]
\D——代表任何非数字字符
\w——代表任何单字字符(字母a~z、A~Z、下划线、0~9),即[a-zA-Z_0-9]
\W——代表任何非单字字符
下面的例子帮助你记住该段
import java.util.regex.Pattern;import java.util.regex.Matcher;public class RegexTest3 {public static void main(String[] args) {
String str ="We call this the live-code approach.These examples are available from three locations-they are " +"on the CD that accompanies this book";String regex = "[a-zA-Z]+"; //根据单词的特性准备一个正则表达式。Pattern pObj = Pattern.compile(regex); //1 匹配模式对象。Matcher mObj = pObj.matcher( str ); //2 将正则表达式转换成一个匹配器System.out.println("你给定的字符串如下: \n\"" + str + "\"");
System.out.println("\n以上字符串中包含的单词分别如下:");
int counter = 0;
while( mObj.find()) {//3 查找String word = mObj.group();//4 获取counter++;//计数System.out.println("第" + counter + "单词是: " + word ); //处理(显示)}
}}
nextXxx()从流中读取一个Xxx并返回Xxx值。具体详见API
- Scanner类的学习
- Java 类Scanner的学习
- 学习Scanner类
- scanner:java的scanner类详解
- Scanner类的应用
- Scanner 类的用法
- Scanner类的说明
- Scanner类的用法
- java的Scanner类
- Scanner类的用法
- Scanner类的使用
- Scanner类的用法
- 有趣的Scanner类
- Scanner()类的使用
- Scanner类的使用
- Java的Scanner类
- java学习之Scanner类
- 【JAVA_SE学习笔记】Scanner类
- sql通配符
- 学习GCD
- Jquery_Checkbox 完成全选,反选和全不选
- 世界上有三样东西不能相信(引用)心胸狭窄的男人勿看
- csapp2e 家庭作业 5.17
- Scanner类的学习
- Let the Balloon Rise 1004
- 提高代码性能及并发性的方法浅谈
- 数组指针与指针数组
- Perf -- Linux下的系统性能调优工具【转自IBM】
- 《黑客与画家》读后感
- hdu1180
- OpenFileDialog上传图片
- netty事件驱动总结