当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:17:00  来源:本站整理

StringTokenizer[Java编程]

赞助商链接



  本文“StringTokenizer[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
固然并不必要IO库的一部份,但StringTokenizer供应了与StreamTokenizer极类似的功效,所以在这里一并报告.
StringTokenizer的作用是每次返回字串内的一个暗号.这些暗号是一些由制表站、空格以及新行脱离的持续字符.因此,字串“Where is my cat?”的暗号辨别是“Where”、“is”、“my”和“cat?”.与StreamTokenizer近似,我们可以指导StringTokenizer按照我们的希望分割输入.但关于StringTokenizer,却需求向构建器传送另一个参数,即我们想利用的脱离字串.普通,假如想举行更复杂的操作,应利用StreamTokenizer.
可用nextToken()向StringTokenizer对象恳求字串内的下一个暗号.该办法要末返回一个暗号,要末返回一个空字串(表示没有暗号剩下).
作为一个例子,下述程序将履行一个有限的句法解析,查询键短语序列,理解句子表示的是欢愉亦或哀思的含义.
//: AnalyzeSentence.java
// Look for particular sequences
// within sentences.
import java.util.*;

public class AnalyzeSentence {
  public static void main(String[] args) {
    analyze("I am happy about this");
    analyze("I am not happy about this");
    analyze("I am not! I am happy");
    analyze("I am sad about this");
    analyze("I am not sad about this");
    analyze("I am not! I am sad");
    analyze("Are you happy about this?");
    analyze("Are you sad about this?");
    analyze("It's you! I am happy");
    analyze("It's you! I am sad");
  }
  static StringTokenizer st;
  static void analyze(String s) {
    prt("\nnew sentence >> " + s);
    boolean sad = false;
    st = new StringTokenizer(s);
    while (st.hasMoreTokens()) {
      String token = next();
      // Look until you find one of the
      // two starting tokens:
      if(!token.equals("I") &&
         !token.equals("Are"))
        continue; // Top of while loop
      if(token.equals("I")) {
        String tk2 = next();
        if(!tk2.equals("am")) // Must be after I
          break; // Out of while loop
        else {
          String tk3 = next();
          if(tk3.equals("sad")) {
            sad = true;
            break; // Out of while loop
          }
          if (tk3.equals("not")) {
            String tk4 = next();
            if(tk4.equals("sad"))
              break; // Leave sad false
            if(tk4.equals("happy")) {
              sad = true;
              break;
            }
          }
        }
      }
      if(token.equals("Are")) {
        String tk2 = next();
        if(!tk2.equals("you"))
          break; // Must be after Are
        String tk3 = next();
        if(tk3.equals("sad"))
          sad = true;
        break; // Out of while loop
      }
    }
    if(sad) prt("Sad detected");
  }
  static String next() {
    if(st.hasMoreTokens()) {
      String s = st.nextToken();
      prt(s);
      return s;
    } 
    else
      return "";
  }
  static void prt(String s) {
    System.out.println(s);
  }
} ///:~
关于预备解析的每个字串,我们进入一个while循环,并将暗号从那个字串中取出.请注意第一个if语句,假定暗号既不是“I”,也不是“Are”,就会履行continue(返回循环起点,再一次开始).这意味着除非发现一个“I”大概“Are”,才会真正得到暗号.大家大概想用==替换equals()办法,但那样做会呈现不正常的表现,因为==对比的是句柄值,而equals()对比的是内容.
analyze()办法剩余部份的逻辑是搜索“I am sad”(我很哀伤、“I am nothappy”(我不欢愉)大概“Are you sad?”(你哀思吗?)这样的句法格局.若没有break语句,这方面的代码乃至大概越发散乱.大家应注意对一个典型的解析器来说,普通都有这些暗号的一个表格,并能在读取新暗号的时刻用一小段代码在表格内移动.
无论若何,只应将StringTokenizer看做StreamTokenizer一种简单并且特别的简化情势.但是,假若有一个字串需求举行暗号处理,并且StringTokenizer的功效实在有限,那么应当做的全部事情就是用StringBufferInputStream将其转换到一个数据流里,再用它成立一个功效更强盛的StreamTokenizer.
  以上是“StringTokenizer[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • java的String和StringBuffer类
  • StringTokenizer
  • <b>用Stripes做Java Web开辟</b>
  • Web程序从Struts向Stripes框架的移植
  • Java编译器关于String常量表达式的优化
  • <b>Java String的常用办法及操纵注意事项</b>
  • <b>将java对象转为java String的几种常用办法解析</b>
  • Java String字符串对象的成立及管理
  • 分享一个实用的String的工具类
  • J2ME循环与String优化筹划
  • 避免重载toString时产生递归调用的办法
  • 在StringGrid顶用右键菜单实现复制粘贴
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .