Scanner类是Java中用来对文本进行扫描处理的类。下面我将简单介绍一下Scanner的使用。
Scanner类虽然有很多的构造器,但总体上来说,大致可以分为如下几种。
- 处理字符串
处理字符串的构造器只有一个,其声明如下所示:
public Scanner(String source);
使用示例如下:
public class ScannerKeyBoardTest {
public static void main(String[] args) throws IOException {
Scanner scan = new Scanner("Tom,Jerry,Spike,Alice,Bob,Carol");
scan.useDelimiter(",");
while (scan.hasNext()) {
System.out.println(scan.next());
}
}
}
执行结果如下图所示:
对于userDelimiter这个方法而言,可以接受的参数为一个字符串形式的正则表达式或一个正则表达式对象。
- 处理字符流
处理字符流的构造器只有一个,其声明如下所示:
public Scanner(Readable source);
其示例代码如下所示:
public class ScannerKeyBoardTest {
public static void main(String[] args) throws IOException {
StringReader reader = new StringReader("Tom Jerry Alice Carol");
Scanner scan = new Scanner(reader);
scan.useDelimiter(Pattern.compile(" "));
while (scan.hasNext()) {
System.out.println(scan.next());
}
}
}
执行结果如下图所示:
- 处理字节流
对于处理字节流的构造器来说有三个,第一个是只接收字节流,而其余两个则是增加了编码(分别是字符串形式和编码对象Charset)。
public Scanner(InputStream source);
public Scanner(InputStream source, String charsetName);
public Scanner(InputStream source, Charset charset);
关于字节流的处理我只写一个例子,其余两个大家可以进行类比。
示例代码如下所示: