对Reader进行token的类,可以访入多个split进行解析

作者:简简单单 2008-01-12
在java。util中的java.io.StringTokenizer类能对单个字符串进行解析,在jdk1.4中的split也可以对单个字符串进行解析,但都不能对Reader流进行解析,在多个字符解析的时候也不能返回分割两个字符串的字符串,下面这个类就是为了解决这个问题而写的,还可以在准备包括一些最基本的解析类型,*和?
可以设置多个split进行解析,在解析的时候返回对应的分割字符串
程序可以直接运行
/* * 创建日期 2005-4-4 * * 更改所生成文件模板为 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释 */package com.csii.template;
import java.io.IOException;import java.io.InputStreamReader;import java.io.Reader;import java.io.StringReader;import java.util.Iterator;
/** * @author wsl * * 更改所生成类型注释的模板为 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释 */public class ReaderToken implements Iterator {
 private Reader reader = null;//存放准备解析的字符流 private String[] splits = null;//准备用来分割字符流的token private StringBuffer HasRead = new StringBuffer();//存放从流中已经读的字符 private String[] splitsSf = null;//由于可能存在一些统配符,所以此处存放统配符在token时的字符,比如在abcdefgh /**  *   */ public ReaderToken(Reader reader, String[] split) {  super();  this.reader = reader;  this.splits = split;  splitsSf = new String[split.length];  for (int i = 0; i < split.length; i++) {   splitsSf[i] = "";  } }
 /* (非 Javadoc)  * @see java.util.Iterator#hasNext()  */ public boolean hasNext() {  if (indexOf() > -1) {   return true;  }  return false; } private int currentsplit = -1; private int indexOf() {
  currentsplit = -1;  int[] pos = new int[splits.length];  for (int i = 0; i < pos.length; i++) {   splitsSf[i] = "";   pos[i] = 0;  } //初试位置符号

相关文章

精彩推荐