日期: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对象恳求字串内的下一个暗号.该办法要末返回一个暗号,要末返回一个空字串(表示没有暗号剩下).
作为一个例子,下述程序将履行一个有限的句法解析,查询键短语序列,理解句子表示的是欢愉亦或哀思的含义.
关于预备解析的每个字串,我们进入一个while循环,并将暗号从那个字串中取出.请注意第一个if语句,假定暗号既不是“I”,也不是“Are”,就会履行continue(返回循环起点,再一次开始).这意味着除非发现一个“I”大概“Are”,才会真正得到暗号.大家大概想用==替换equals()办法,但那样做会呈现不正常的表现,因为==对比的是句柄值,而equals()对比的是内容.//: 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); } } ///:~
analyze()办法剩余部份的逻辑是搜索“I am sad”(我很哀伤、“I am nothappy”(我不欢愉)大概“Are you sad?”(你哀思吗?)这样的句法格局.若没有break语句,这方面的代码乃至大概越发散乱.大家应注意对一个典型的解析器来说,普通都有这些暗号的一个表格,并能在读取新暗号的时刻用一小段代码在表格内移动.
无论若何,只应将StringTokenizer看做StreamTokenizer一种简单并且特别的简化情势.但是,假若有一个字串需求举行暗号处理,并且StringTokenizer的功效实在有限,那么应当做的全部事情就是用StringBufferInputStream将其转换到一个数据流里,再用它成立一个功效更强盛的StreamTokenizer.
以上是“StringTokenizer[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:Java 1.1的IO流
- ·下一篇文章:java IO操练题
- ·中查找“StringTokenizer”更多相关内容
- ·中查找“StringTokenizer”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论