仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1215|回复: 18
打印 上一主题 下一主题

[学习教程] JAVA编程:Stream Tokenizing(分化字符串)

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:55:06 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
多谢指点,其实我对.net和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。stream|字符串从sun网站看到的StreamTokenizing
InTechTips:June23,1998,anexampleofstringtokenizationwaspresented,usingtheclassjava.util.StringTokenizer.

Theresalsoanotherwaytodotokenization,usingjava.io.StreamTokenizer.StreamTokenizeroperatesoninputstreamsratherthanstrings,andeachbyteintheinputstreamisregardedasacharacterintherangeu0000throughu00FF.

StreamTokenizerislowerlevelthanStringTokenizer,butoffersmorecontroloverthetokenizationprocess.Theclassusesaninternaltabletocontrolhowtokensareparsed,andthissyntaxtablecanbemodifiedtochangetheparsingrules.HeresanexampleofhowStreamTokenizerworks:


importjava.io.*;
importjava.util.*;

publicclassstreamtoken{
publicstaticvoidmain(Stringargs[])
{
if(args.length==0){
System.err.println("missinginputfilename");
System.exit(1);
}

Hashtablewordlist=newHashtable();

try{
FileReaderfr=newFileReader(args[0]);
BufferedReaderbr=newBufferedReader(fr);

StreamTokenizerst=newStreamTokenizer(br);
//StreamTokenizerst=
//newStreamTokenizer(newStringReader(
//"thisisatest"));
st.resetSyntax();
st.wordChars(A,Z);
st.wordChars(a,z);
inttype;
Objectdummy=newObject();
while((type=st.nextToken())!=
StreamTokenizer.TT_EOF){
if(type==StreamTokenizer.TT_WORD)
wordlist.put(st.sval,dummy);
}
br.close();
}
catch(IOExceptione){
System.err.println(e);
}

Enumerationenum=wordlist.keys();
while(enum.hasMoreElements())
System.out.println(enum.nextElement());
}
}

Inthisexample,aStreamTokenizeriscreatedontopofaFileReader/BufferedReaderpairthatrepresentsatextfile.NotethataStreamTokenizercanalsobemadetoreadfromaStringbyusingStringReaderasillustratedinthecommented-outcodeshownabove(StringBufferInputStreamalsoworks,althoughthisclasshasbeendeprecated).

ThemethodresetSyntaxisusedtocleartheinternalsyntaxtable,sothatStreamTokenizerforgetsanyrulesthatitknowsaboutparsingtokens.ThenwordCharsisusedtodeclarethatonlyupperandlowercaselettersshouldbeconsideredtoformwords.Thatis,theonlytokensthatStreamTokenizerrecognizesaresequencesofupperandlowercaseletters.

nextTokeniscalledrepeatedlytoretrievewords,andeachresultingwordisfoundinthepublicinstancevariable"st.sval".ThewordsareinsertedintoaHashtable,andattheendofprocessingthecontentsofthetablearedisplayed,usinganEnumerationasillustratedinTechTips:June23,1998.Sotheactionofthisprogramistofindalltheuniquewordsinatextfileanddisplaythem.

StreamTokenizeralsohasspecialfacilitiesforparsingnumbers,quotedstrings,andcomments.ItsausefulalternativetoStringTokenizer,andisespeciallyapplicableifyouaretokenizinginputstreams,orwishtoexercisefinercontroloverthetokenizationprocess


用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。
蒙在股里 该用户已被删除
沙发
 楼主| 发表于 2015-1-21 16:58:51 | 显示全部楼层
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-5 02:45

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表