国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

對Reader進(jìn)行token的類,可以訪入多個split進(jìn)行解析

2024-07-21 02:15:23
字體:
供稿:網(wǎng)友

在java。util中的java.io.stringtokenizer類能對單個字符串進(jìn)行解析,在jdk1.4中的split也可以對單個字符串進(jìn)行解析,但都不能對reader流進(jìn)行解析,在多個字符解析的時候也不能返回分割兩個字符串的字符串,下面這個類就是為了解決這個問題而寫的,還可以在準(zhǔn)備包括一些最基本的解析類型,*和?

可以設(shè)置多個split進(jìn)行解析,在解析的時候返回對應(yīng)的分割字符串

程序可以直接運行

/* * 創(chuàng)建日期 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;//存放準(zhǔn)備解析的字符流 private string[] splits = null;//準(zhǔn)備用來分割字符流的token private stringbuffer hasread = new stringbuffer();//存放從流中已經(jīng)讀的字符 private string[] splitssf = null;//由于可能存在一些統(tǒng)配符,所以此處存放統(tǒng)配符在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;  } //初試位置符號

  try {   while (true) {

    for (int j = 0; j < pos.length; j++) {     if (pos[j] >= splits[j].length()) {      currentsplit = j;

      return currentsplit;

      //如果當(dāng)前pos里面的長度達(dá)到最splits里面的最大值,返回當(dāng)前的split     }    }

    char readchar = (char) reader.read();

    if (readchar == -1) {     return currentsplit;    }

    if (readchar == 65535) {     return currentsplit;    }

    hasread.append(readchar);

    for (int i = 0; i < pos.length; i++) {

     char splitposchar = splits[i].charat(pos[i]);

     if (splitposchar == readchar) {      pos[i]++;      splitssf[i] += readchar;     } else if (splitposchar == '*') {      char nextchar = splits[i].charat((pos[i] + 1));      //得到*后面一個字符,一般統(tǒng)配符都表示為1*2      if (nextchar == readchar) {       pos[i]++;       pos[i]++;      }      splitssf[i] += readchar;     } else if (splitposchar == '?') {      pos[i]++;      splitssf[i] += readchar;     } else {

      pos[i] = 0;      splitssf[i] = "";     }

    }

   }

  } catch (ioexception e) {

   e.printstacktrace();  }

  return -1; }

 /* (非 javadoc)  * @see java.util.iterator#next()  */ public object next() {

  int i = hasread.length() - splitssf[currentsplit].length();

  stringbuffer sf = new stringbuffer();  sf = this.hasread;  hasread = new stringbuffer();  //   if(i<0){  //    i=0;  //   }  sf.setlength(i);  return sf;

 } public string gettoken() {  return splits[this.currentsplit]; } public string gettokeninreader() {  return splitssf[currentsplit]; } public object getend() {  return this.hasread; } /* (非 javadoc)  * @see java.util.iterator#remove()  */ public void remove() {

 } public static void main(string[] args) throws ioexception {  string[] a = new string[] { "a?a" };  string s = "cefaaasdbd";  readertoken token = new readertoken(new stringreader(s), a);  while (token.hasnext()) {   system.err.println("next---" + token.next());   system.err.println("token---" + token.gettoken());   system.err.println(    "gettokeninreader---" + token.gettokeninreader());  }  system.err.println("end--" + token.getend());

  //  stringreader reader=new stringreader(s);  //  char c;  //  while((c=(char)reader.read())!=-1){  //   system.err.println(c);  //   system.out.println((long)c);  //  }

 }}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 清涧县| 神木县| 诸城市| 滦南县| 玉田县| 汝城县| 巴塘县| 苏州市| 盐津县| 唐河县| 肥城市| 海原县| 项城市| 育儿| 成安县| 丹寨县| 招远市| 金乡县| 天气| 会东县| 静海县| 大新县| 柳州市| 东乌| 新闻| 万州区| 江永县| 嘉善县| 英德市| 南乐县| 防城港市| 平利县| 米易县| 庆城县| 留坝县| 越西县| 嘉峪关市| 龙游县| 萍乡市| 唐河县| 惠来县|