??xml version="1.0" encoding="utf-8" standalone="yes"?>久久97超碰国产精品超碰,日韩欧美一区二区在线观看,欧美精品资源http://www.aygfsteel.com/tanghc/Welcome!zh-cnTue, 15 Jul 2025 09:13:05 GMTTue, 15 Jul 2025 09:13:05 GMT60- java文g操作大全http://www.aygfsteel.com/tanghc/archive/2006/03/18/35943.htmlJavaWormJavaWormSat, 18 Mar 2006 07:19:00 GMThttp://www.aygfsteel.com/tanghc/archive/2006/03/18/35943.htmlhttp://www.aygfsteel.com/tanghc/comments/35943.htmlhttp://www.aygfsteel.com/tanghc/archive/2006/03/18/35943.html#Feedback0http://www.aygfsteel.com/tanghc/comments/commentRss/35943.htmlhttp://www.aygfsteel.com/tanghc/services/trackbacks/35943.html
java文g操作大全
文g的徏?查与删除
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>文g的徏立、检查与删除</title>
</head>
<body>
<%
String path=request.getRealPath("");
//out.println(path);
File f=new File(path,"File.txt");
//out.println(f);
//out.println(f.exists());
if(f.exists()){//查File.txt是否存在
f.delete();//删除File.txt文g
out.println(path + "\\File.txt 存在Q已删除?);
}else{
f.createNewFile();//在当前目录下建立一个名为File.txt的文?br />out.println(path + "\\File.txt 不存在,已徏立?);//输出目前所在的目录路径
}
%>
目录的徏?查与删除
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>目录的徏?查与删除</title>
</head>
<body>
<%
String path=request.getRealPath("");
path=path + "\\Sub";//要建立的目录\?br />File d=new File(path);//建立代表Sub目录的File对象Qƈ得到它的一个引?br />if(d.exists()){//查Sub目录是否存在
d.delete();
out.println("Sub目录存在Q已删除");
}else{
d.mkdir();//建立Sub目录
out.println("Sub目录不存在,已徏?);
}
%>
</body>
</html>
如何在JSP中处理虚拟目?br /><%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>JSP中如何处理虚拟目?lt;/title>
</head>
<body>
取得虚拟目录对应的磁盘\?lt;br>
Web站点ȝ录的位置?lt;font color=#ff0000><%=request.getRealPath("/")%></font><br>
JSP|页所在的目录位置<font color=#ff0000><%=request.getRealPath("./")%></font><br>
JSP|页所在目录上一层目录的位置<font color=#ff0000><%=request.getRealPath("../")%></font><br>
</body>
</html>
文g属性的取得
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.Date,java.io.*"%>
<html>
<head>
<title>文g属性的取得</title>
</head>
<body>
<%
String path=request.getRealPath("/");
File f=new File(path,"ReadData.txt");
if(f.exists()){
%>
<%=f.getName()%>的属性如下:<br><br>
文g长度为:<%=f.length()%>
<%=f.isFile()?"是文?:"不是文g"%><br>
<%=f.isDirectory()?"是目?:"不是目录"%><br>
<%=f.canRead()?"可读?:"不可d"%><br>
<%=f.canWrite()?"可写?:"不可写入"%><br>
<%=f.isHidden()?"是隐藏文?:"不是隐藏文g"%><br>
文g的最后修Ҏ期ؓQ?lt;%=new Date(f.lastModified())%><br>
<%
}else{
f.createNewFile();//在当前目录下建立一个名为ReaData.txt的文?br />%>
<%=f.getName()%>的属性如下:<br><br>
文g长度为:<%=f.length()%>
<%=f.isFile()?"是文?:"不是文g"%><br>
<%=f.isDirectory()?"是目?:"不是目录"%><br>
<%=f.canRead()?"可读?:"不可d"%><br>
<%=f.canWrite()?"可写?:"不可写入"%><br>
<%=f.isHidden()?"是隐藏文?:"不是隐藏文g"%><br>
文g的最后修Ҏ期ؓQ?lt;%=new Date(f.lastModified())%><br>
<%
}
%>
</body>
</html>
取出目录中文件的Ҏ
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>取出目录中文件的Ҏ--列出目录中的文g</title>
</head>
<body>
<%
String path=request.getRealPath("/");
File d=new File(path);//建立当前目录中文件的File对象
File list[]=d.listFiles();//取得代表目录中所有文件的File对象数组
out.println("<font color=#ff0000>" + path + "目录下的文gQ?lt;/font><br>");
for(int i=0;i<list.length;i++){
if(list<I>.isFile()){
out.println(list<I>.getName() + "<br>");
}
}
out.println("<br><font color=#ff0000>" + path + "目录下的目录Q?lt;/font><br>");
for(int i=0;i<list.length;i++){
if(list<I>.isDirectory()){
out.println(list<I>.getName() + "<br>");
}
}
%>
</body>
</html>
判断是否为空白文?br /><%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>判断是否为空白文?lt;/title>
</head>
<body>
<%
String path=request.getRealPath("/");
out.println(path);
FileReader fr=new FileReader(path + "\\AtEnd.txt");//建立FileReader对象Qƈ实例化ؓfr
//对FileReadercȝ成的对象使用read()ҎQ可以从字符中d下一个字W?br />if(fr.read()==-1)//判断是否已读到文件的l尾
{
out.print("AtEnd.txt文g中没有数?lt;br>");
}else{
out.println("AtEnd.txt文g中有数据");
}
fr.close();
%>
</body>
</html>
d所有的文g数据
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*,java.lang.*"%>
<html>
<head>
<title>d所有的文g数据</title>
</head>
<body>
<%
String path=request.getRealPath(".");
FileReader fr=new FileReader(path + "\\ReadData.txt");
//关键在于dq程中,要判断所d的字W是否已l到了文件的末尾Qƈ且这个字W是不是文g中的断行W,卛_断该字符值是否ؓ13?br />int c=fr.read();//从文件中d一个字W?br />//判断是否已读到文件结?br />while(c!=-1){
out.print((char)c);//输出d的数?br />c=fr.read();//从文件中l箋d数据
if(c==13){//判断是否为断行字W?br />out.print("<br>");//输出分行标签
fr.skip(1);//略过一个字W?br />//c=fr.read();//d一个字W?br />}
}
fr.close();
%>
</body>
</html>
一行一行读取数?br /><%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>文gd</title>
</head>
<body>
<%
String path=request.getRealPath("");//取得当前目录的\?br />FileReader fr=new FileReader(path + "\\file\\inc\\t.txt");//建立FileReader对象Qƈ实例化ؓfr
BufferedReader br=new BufferedReader(fr);//建立BufferedReader对象Qƈ实例化ؓbr
String Line=br.readLine();//从文件读取一行字W串
//判断d到的字符串是否不为空
while(Line!=null){
out.println(Line + "<br>");//输出从文件中d的数?br />Line=br.readLine();//从文件中l箋d一行数?br />}
br.close();//关闭BufferedReader对象
fr.close();//关闭文g
%>
</body>
</html>
略过文g中的字符不读?br /><%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>略过字节不读?lt;/title>
</head>
<body>
<%
String path=request.getRealPath(".");
FileReader fr=new FileReader(path + "\\ReadData.txt");
fr.skip(2);//跌2个字?br />int c=fr.read();//d一个字?br />while(c!=-1){
out.print((char)c);
c=fr.read();
}
fr.close();
%>
</body>
</html>
数据写入文?br /><%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>数据写入文?lt;/title>
</head>
<body>
<%
String path=request.getRealPath(".");
FileWriter fw=new FileWriter(path + "\\WriteData.txt");//建立FileWriter对象Qƈ实例化fw
//字W串写入文g
fw.write("大家好!");
fw.write("本书是《JSP~程技巧?);
fw.write("请多多指教!");
fw.write("email:stride@sina.com");
fw.close();
FileReader fr=new FileReader(path + "\\WriteData.txt");
BufferedReader br=new BufferedReader(fr);//建立BufferedReader对象Qƈ实例化ؓbr
String Line=br.readLine();
//d一行数?br />out.println(Line + "<br>");
br.close();//关闭BufferedReader对象
fr.close();
%>
</body>
</html>
写入文件的数据分行
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>写入文件的数据分行</title>
</head>
<body>
<%
String path=request.getRealPath(".");
FileWriter fw=new FileWriter(path + "\\WriteData.txt");
BufferedWriter bw=new BufferedWriter(fw);
bw.write("大家好!");
bw.write("本书是《JSP~程技巧》?);
bw.newLine();//断行
bw.write("请多多指教!");
bw.newLine();//断行
bw.write("email: stride@sina.com");
bw.flush();//数据更新至文g
fw.close();//关闭文g?br />out.println("写入文g内容为:<br>");
FileReader fr=new FileReader(path + "\\WriteData.txt");
BufferedReader br=new BufferedReader(fr);
String Line=br.readLine();//d一行数?br />while(Line!=null){
out.println(Line + "<br>");
Line=br.readLine();
}
fr.close();
%>
</body>
</html>
如何数据追加写入到文g
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.io.*"%>
<html>
<head>
<title>写入文件的数据分行</title>
</head>
<body>
<%
String path=request.getRealPath(".");
RandomAccessFile rf=new RandomAccessFile(path + "\\WriteData.txt","rw");//定义一个类RandomAccessFile的对象,q实例化
rf.seek(rf.length());//指针移动到文g末尾
rf.writeBytes("\nAppend a line to the file!");
rf.close();//关闭文g?br />out.println("写入文g内容为:<br>");
FileReader fr=new FileReader(path + "\\WriteData.txt");
BufferedReader br=new BufferedReader(fr);//d文g的BufferedRead对象
String Line=br.readLine();
while(Line!=null){
out.println(Line + "<br>");
Line=br.readLine();
}
fr.close();//关闭文g
%>
</body>
</html></I></I></I></I>
转蝲Q?a id="ArticleContent1_ArticleContent1_AuthorBlogLink" target="_blank">http://blog.csdn.net/chensheng913/

]]> - JDK5.0?1个主要新特征http://www.aygfsteel.com/tanghc/archive/2006/03/18/35939.htmlJavaWormJavaWormSat, 18 Mar 2006 06:50:00 GMThttp://www.aygfsteel.com/tanghc/archive/2006/03/18/35939.htmlhttp://www.aygfsteel.com/tanghc/comments/35939.htmlhttp://www.aygfsteel.com/tanghc/archive/2006/03/18/35939.html#Feedback0http://www.aygfsteel.com/tanghc/comments/commentRss/35939.htmlhttp://www.aygfsteel.com/tanghc/services/trackbacks/35939.html阅读全文

]]> - Java正则表达式详?http://www.aygfsteel.com/tanghc/archive/2006/03/18/35935.htmlJavaWormJavaWormSat, 18 Mar 2006 06:32:00 GMThttp://www.aygfsteel.com/tanghc/archive/2006/03/18/35935.htmlhttp://www.aygfsteel.com/tanghc/comments/35935.htmlhttp://www.aygfsteel.com/tanghc/archive/2006/03/18/35935.html#Feedback1http://www.aygfsteel.com/tanghc/comments/commentRss/35935.htmlhttp://www.aygfsteel.com/tanghc/services/trackbacks/35935.html
如果你曾l用qPerl或Q何其他内建正则表辑ּ支持的语aQ你一定知道用正则表达式处理文本和匚w模式是多么简单。如果你不熟悉这个术语,那么“正则表辑ּ”(Regular ExpressionQ就是一个字W构成的Ԍ它定义了一个用来搜索匹配字W串的模式? |
许多语言Q包括Perl、PHP、Python、JavaScript和JScriptQ都支持用正则表辑ּ处理文本Q一些文本编辑器用正则表辑ּ实现高“搜?替换”功能。那么Java又怎样呢?本文写作Ӟ一个包含了用正则表辑ּq行文本处理的Java规范需求(Specification RequestQ已l得到认可,你可以期待在JDK的下一版本中看到它? |
然而,如果现在需要用正则表辑ּQ又该怎么办呢Q你可以从Apache.org下蝲源代码开攄Jakarta-ORO库。本文接下来的内容先要地介绍正则表达式的入门知识Q然后以Jakarta-ORO APIZ介绍如何使用正则表达式? |
我们先从单的开始。假设你要搜索一个包含字W“cat”的字符Ԍ搜烦用的正则表达式就是“cat”。如果搜索对大小写不敏感Q单词“catalog”、“Catherine”、“sophisticated”都可以匚w。也是_ |
假设你在玩英文拼字游戏,惌扑և三个字母的单词,而且q些单词必须以“t”字母开_以“n”字母结束。另外,假设有一本英文字典,你可以用正则表达式搜索它的全部内宏V要构造出q个正则表达式,你可以用一个通配W——句点符号?”。这P完整的表辑ּ是“t.n”,它匹配“tan”?“ten”、“tin”和“ton”,q匹配“t#n”、“tpn”甚至“t n”,q有其他许多无意义的l合。这是因为句点符号匹配所有字W,包括I格、Tab字符甚至换行W: |
Z解决句点W号匚w范围q于q泛q一问题Q你可以在方括号Q“[]”)里面指定看来有意义的字符。此Ӟ只有Ҏ号里面指定的字符才参与匹配。也是_正则表达式“t[aeio]n”只匚w“tan”、“Ten”、“tin”和“ton”。但“Toon”不匚wQ因为在Ҏ号之内你只能匚w单个字符Q? |
如果除了上面匚w的所有单词之外,你还惌匚w“toon”,那么Q你可以使用“|”操作符。“|”操作符的基本意义就是“或”运。要匚w “toon”,使用“t(a|e|i|o|oo)n”正则表辑ּ。这里不能用方扩号Q因为方括号只允许匹配单个字W;q里必须使用圆括号?)”。圆括号q可以用来分l,具体请参见后面介l? |
表一昄了表C匹配次数的W号Q这些符L来确定紧靠该W号左边的符号出现的ơ数Q? |
假设我们要在文本文g中搜索美国的C会安全L。这个号码的格式?99-99-9999。用来匹配它的正则表辑ּ如图一所C。在正则表达式中Q连字符Q?”)有着Ҏ的意义,它表CZ个范_比如??。因此,匚wC会安全L中的q字W号Ӟ它的前面要加上一个{义字W“\”? |
图一Q匹配所?23-12-1234形式的社会安全号?/p>
|
假设q行搜烦的时候,你希望连字符号可以出玎ͼ也可以不出现——即Q?99-99-9999?99999999都属于正的格式。这Ӟ你可以在q字W号后面加上“?”数量限定符P如图二所C: |
图二Q匹配所?23-12-1234?23121234形式的社会安全号?/p>
|
下面我们再来看另外一个例子。美国汽车牌照的一U格式是四个数字加上二个字母。它的正则表辑ּ前面是数字部分“[0-9]{4}”,再加上字母部分“[A-Z]{2}”。图三显CZ完整的正则表辑ּ? |
“^”符L为“否”符受如果用在方括号内,“^”表CZ惌匚w的字W。例如,囑֛的正则表辑ּ匚w所有单词,但以“X”字母开头的单词除外? |
假设要从格式为“June 26, 1951”的生日日期中提取出月䆾部分Q用来匹配该日期的正则表辑ּ可以如图五所C: |
图五Q匹配所有Moth DD,YYYY格式的日?/p>
|
新出现的“\s”符hI白W号Q匹配所有的I白字符Q包括Tab字符。如果字W串正确匚wQ接下来如何提取出月份部分呢Q只需在月份周围加上一个圆括号创徏一个组Q然后用ORO APIQ本文后面详l讨论)提取出它的倹{修改后的正则表辑ּ如图六所C: |
囑օQ匹配所有Month DD,YYYY格式的日期,定义月䆾gؓW一个组
|
为简便v见,你可以用一些ؓ常见正则表达式创建的快捷W号。如表二所C: |
例如Q在前面C会安全L的例子中Q所有出现“[0-9]”的地方我们都可以用“\d”。修改后的正则表辑ּ如图七所C: |
图七Q匹配所?23-12-1234格式的社会安全号?/p>
|
有许多源代码开攄正则表达式库可供JavaE序员用,而且它们中的许多支持Perl 5兼容的正则表辑ּ语法。我在这里选用的是Jakarta-ORO正则表达式库Q它是最全面的正则表辑ּAPI之一Q而且它与Perl 5正则表达式完全兼宏V另外,它也是优化得最好的API之一? |
Jakarta-ORO库以前叫做OROMatcherQDaniel Savarese大方地把它赠送给了Jakarta Project。你可以按照本文最后参考资源的说明下蝲它? |
我首先将要介l用Jakarta-ORO库时你必d建和讉K的对象,然后介绍如何使用Jakarta-ORO API? |
首先Q创Z个Perl5Compilercȝ实例Qƈ把它赋值给PatternCompiler接口对象。Perl5Compiler是PatternCompiler接口的一个实玎ͼ允许你把正则表达式编译成用来匚w的Pattern对象? |
要把正则表达式编译成Pattern对象Q调用compiler对象的compile()ҎQƈ在调用参C指定正则表达式。例如,你可以按照下面这U方式编译正则表辑ּ“t[aeio]n”: |
默认情况下,~译器创Z个大写敏感的模式(patternQ。因此,上面代码~译得到的模式只匚w“tin”、“tan”?“ten”和“ton”,但不匚w“Tin”和“taN”。要创徏一个大写不敏感的模式Q你应该在调用编译器的时候指定一个额外的参数Q? |
创徏好Pattern对象之后Q你可以通过PatternMatchercȝ该Pattern对象q行模式匚w? |
PatternMatcher对象ҎPattern对象和字W串q行匚w查。你要实例化一个Perl5Matchercdƈ把结果赋值给 PatternMatcher接口。Perl5MatchercLPatternMatcher接口的一个实玎ͼ它根据Perl 5正则表达式语法进行模式匹配: |
使用PatternMatcher对象Q你可以用多个方法进行匹配操作,q些Ҏ的第一个参数都是需要根据正则表辑ּq行匚w的字W串Q? |
· boolean matches(String input, Pattern pattern)Q当输入字符串和正则表达式要_匚w时用。换句话_正则表达式必d整地描述输入字符丌Ӏ? |
· boolean matchesPrefix(String input, Pattern pattern)Q当正则表达式匹配输入字W串起始部分时用? |
· boolean contains(String input, Pattern pattern)Q当正则表达式要匚w输入字符串的一部分时用(卻I它必L一个子Ԍ? |
另外Q在上面三个Ҏ调用中,你还可以用PatternMatcherInput对象作ؓ参数替代String对象Q这Ӟ你可以从字符串中最后一ơ匹配的位置开始l进行匹配。当字符串可能有多个子串匚wl定的正则表辑ּӞ用PatternMatcherInput对象作ؓ参数很有用了。用 PatternMatcherInput对象作ؓ参数替代StringӞ上述三个Ҏ的语法如下: |
· boolean matches(PatternMatcherInput input, Pattern pattern) |
· boolean matchesPrefix(PatternMatcherInput input, Pattern pattern) |
· boolean contains(PatternMatcherInput input, Pattern pattern) |
下面我们来看看Jakarta-ORO库的一些应用实例? |
dQ分析一个Web服务器日志文Ӟ定每一个用戯在网站上的时间。在典型的BEA WebLogic日志文g中,日志记录的格式如下: |
分析q个日志记录Q可以发玎ͼ要从q个日志文g提取的内Ҏ两项QIP地址和页面访问时间。你可以用分l符P圆括P从日志记录提取出IP地址和时间标记? |
首先我们来看看IP地址。IP地址?个字节构成,每一个字节的值在0?55之间Q各个字节通过一个句点分隔。因此,IP地址中的每一个字节有臛_一个、最多三个数字。图八显CZ为IP地址~写的正则表辑ּQ? |
IP地址中的句点字符必须q行转义处理Q前面加上“\”)Q因为IP地址中的句点h它本来的含义Q而不是采用正则表辑ּ语法中的Ҏ含义。句点在正则表达式中的特D含义本文前面已l介l? |
日志记录的时间部分由一Ҏ括号包围。你可以按照如下思\提取出方括号里面的所有内容:首先搜烦起始Ҏ号字W(“[”)Q提取出所有不过l束Ҏ号字W(“]”)的内容,向前L直至扑ֈl束Ҏ号字W。图九显CZq部分的正则表达式? |
现在Q把上述两个正则表达式加上分l符P圆括P后合q成单个表达式,q样可以从日志记录提取出IP地址和时间。注意,Z匚w? -”(但不提取它)Q正则表辑ּ中间加入了“\s-\s-\s”。完整的正则表达式如囑֍所C? |
现在正则表达式已l编写完毕,接下来可以编写用正则表辑ּ库的Java代码了? |
Z用Jakarta-ORO库,首先创徏正则表达式字W串和待分析的日志记录字W串Q? |
q里使用的正则表辑ּ与图十的正则表达式差不多完全相同Q但有一点例外:在Java中,你必d每一个向前的斜杠Q“\”)q行转义处理。图十不?Java的表CŞ式,所以我们要在每个“\”前面加上一个“\”以免出现编译错误。遗憄是,转义处理q程很容易出现错误,所以应该小心}慎。你可以首先输入未经转义处理的正则表辑ּQ然后从左到右依ơ把每一个“\”替换成“\\”。如果要复检Q你可以试着把它输出到屏q上? |
初始化字W串之后Q实例化PatternCompiler对象Q用PatternCompiler~译正则表达式创Z个Pattern对象Q? |
现在Q创建PatternMatcher对象Q调用PatternMatcher接口的contain()Ҏ查匹配情况: |
接下来,利用PatternMatcher接口q回的MatchResult对象Q输出匹配的l。由于logEntry字符串包含匹配的内容Q你可以看到cd下面的输出: |
下面一个Q务是分析HTML面内FONT标记的所有属性。HTML面内典型的FONT标记如下所C: |
在这U情况下Q我你用两个正则表辑ּ。第一个如囑֍一所C,它从字体标记提取出?face="Arial, Serif" size="+2" color="red"”? |
W二个正则表辑ּ如图十二所C,它把各个属性分割成名字-值对? |
现在我们来看看完成这个Q务的Java代码。首先创Z个正则表辑ּ字符Ԍ用Perl5Compiler把它们编译成Pattern对象。编译正则表辑ּ的时候,指定Perl5Compiler.CASE_INSENSITIVE_MASK选项Q得匹配操作不区分大小写? |
接下来,创徏一个执行匹配操作的Perl5Matcher对象? |
假设有一个Stringcd的变量htmlQ它代表了HTML文g中的一行内宏V如果html字符串包含FONT标记Q匹配器返回true。此Ӟ你可以用匚w器对象返回的MatchResult对象获得W一个组Q它包含了FONT的所有属性: |
接下来创Z个PatternMatcherInput对象。这个对象允怽从最后一ơ匹配的位置开始l进行匹配操作,因此Q它很适合于提取FONT标记内属性的名字-值对。创建PatternMatcherInput对象Q以参数形式传入待匹配的字符丌Ӏ然后,用匹配器实例提取出每一个FONT的属性。这通过指定PatternMatcherInput对象Q而不是字W串对象Qؓ参数Q反复地调用PatternMatcher对象的contains ()Ҏ完成。PatternMatcherInput对象之中的每一ơP代将把它内部的指针向前移动,下一ơ检将从前一ơ匹配位|的后面开始? |
下面我们来看看另一个处理HTML的例子。这一ơ,我们假定Web服务器从widgets.acme.comUd了newserver.acme.com。现在你要修改一些页面中的链接: |
如果能够匚wq个正则表达式,你可以用下面的内Ҏ换图十三的链接: |
注意#字符的后面加上了$1。Perl正则表达式语法用$1?2{表C已l匹配且提取出来的组。图十三的表辑ּ把所有作Z个组匚w和提取出来的内容附加到链接的后面? |
现在Q返回Java。就象前面我们所做的那样Q你必须创徏试字符Ԍ创徏把正则表辑ּ~译到Pattern对象所必需的对象,以及创徏一个PatternMatcher对象Q?img alt="" src="http://www.ccw.com.cn/htm/app/aprog/01_7_31_4_v.jpg" border="0" /> |
接下来,用com.oroinc.text.regex包Utilcȝsubstitute()静态方法进行替换,输出l果字符Ԍ |
q个调用的前两个参数是以前创建的PatternMatcher和Pattern对象。第三个参数是一个Substiution对象Q它军_了替换操作如何进行。本例用的是Perl5Substitution对象Q它能够q行Perl5风格的替换。第四个参数是想要进行替换操作的字符Ԍ最后一个参数允许指定是否替换模式的所有匹配子ԌUtil.SUBSTITUTE_ALLQ,或只替换指定的次数?br />转自Q?a >http://blog.csdn.net/feng_sundy/archive/2006/03/15/625227.aspx |

]]> - Java 开发中遇到的ؕ码问?/title>http://www.aygfsteel.com/tanghc/archive/2006/03/18/35934.htmlJavaWormJavaWormSat, 18 Mar 2006 06:24:00 GMThttp://www.aygfsteel.com/tanghc/archive/2006/03/18/35934.htmlhttp://www.aygfsteel.com/tanghc/comments/35934.htmlhttp://www.aygfsteel.com/tanghc/archive/2006/03/18/35934.html#Feedback0http://www.aygfsteel.com/tanghc/comments/commentRss/35934.htmlhttp://www.aygfsteel.com/tanghc/services/trackbacks/35934.html
若想明白jsp开发过E中Z么会产生中文qQ我们先来看看unicode~码?br />Unicode Q统一码)思义是一个将世界上各U文字统一在一L东东。由国各大电脑厂商l成的Unicode{进会来推动。目的,推广一个世界通用的编码体Ӟ惊世界上所有常用的文字都涵盖进去,从而减个电脑商开发国外市场遇到的问题?br />Z成千上万的文字l统攉C个共同的~码机制下,在兼儡的原则下,不管是东方还是西Ҏ字,每个字在Unicode中一律以两个Bytes来表C,q样臛_??6ơ方65536U不同的l合Q以应付目前绝大多数场合的需要?br />基本上,计算机只是处理数字。它们指定一个数字,来储存字母或其他字符。在创造Unicode之前Q有数百U指定这些数字的~码pȝ。没有一个编码可以包含够的字符Q例如,单单Ƨ州共同体就需要好几种不同的编码来包括所有的语言。即使是单一U语aQ例如英语,也没有哪一个编码可以适用于所有的字母Q标点符P和常用的技术符受?br />q些~码pȝ也会互相冲突。也是_两种~码可能使用相同的数字代表两个不同的字符Q或使用不同的数字代表相同的字符。Q何一台特定的计算?特别是服务器)都需要支持许多不同的~码Q但是,不论什么时候数据通过不同的编码或q_之间Q那些数据M有损坏的危险?br />Unicodel每个字W提供了一个唯一的数字,不论是什么^収ͼ不论是什么程序,不论什么语a。Unicode标准已经被这些工业界的领g所采用Q例如:Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys和其它许多公司。最新的标准都需要UnicodeQ例如XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML{等Qƈ且,Unicode是实现ISO/IEC 10646的正规方式。许多操作系l,所有最新的览器和许多其他产品都支持它。Unicode标准的出现和支持它工L存在Q是q来全球软g技术最重要的发展趋ѝ?br />Unicode与客h务器或多层应用程序和|站l合Q比使用传统字符集节省费用。Unicode使单一软g产品或单一|站能够贯穿多个q_Q语a和国Ӟ而不需要重建。它可将数据传输到许多不同的pȝQ而无损坏?br />在与Unicode相关的各技术文件中Q经怼看到ISO 10646和UCSq两个名词?br />ISO是位于瑞士的国际标准局的羃写?br />UCS为ISO颁布的第10646h?Universal Character Set,是世界通用字符集?br />UCS通用字符集采?个Bytes来编?世界上所有的官用和商用编码大通吃Q一|打。Unicode?991q便和ISO的UCS组密切配合Q让Unicode和ISO 10646保持一致。因此Unicode ?.0版开始,便和 ISO 10646-1使用相同的编码?br />L字典中的汉字??千,如果再加上里面没有的体字Q和不同写法的日文字Q那?Unicode6万多的分配空_光用来分配汉字就昑־捉禁见昼Q更别说什么泰文,阿拉伯等其他文字了。针对这个问题Unicode和UCS采用了[中日韩文整合]QCJK UnificationQ的解决ҎQ把中日韩笔画详的汉字用同一个单码表C?br />l过[中日韩文整合]的UnicodeUCؓl汉字Unihan?br />完整的Unicode4.0版可?/font>
http://www.unicode.org/Public/UNIDATA/Unihan.txt
下蝲?br />
UTF (Unicode/UCS Transformation Format),Unicode推荐使用UTF-8和UTF-16两种格式其中8?6指的是Bits数而不是Bytes数?br />UTF-16基本是Unicode双字节的实现Q加上一个应付未来需要的扩充~码机制Q很用Q?br />UTF-8 是一U不{幅的编码方式,英数字(Ascii字码Q保持原Ӟ完全不受影响Q因此不需要做转换Q,而其他汉字资料须透过E序来{换,会[变胖]Q因为每个字需要额外一个或两个Bytes来编码?br />UCS字符集中Q有UCS-2和UCS-4{编码方式其中的2?指的是bytes敎ͼ对应UTF-8和UTF-16.
UCS-2基本和Unicode双byte ~码差不?br />UCS-4?byte~码表示一个字Q在每个 UCS-2前面加上两个I白的ByteQ便可得到对应的 UCS-4?br />
Unicode的空间分配:
以下UnicodeZ码均?6q制表示
Unicode的前256个字W和ISO-8859-1(西欧字母)完全相同Q其中前半段是Ascii(u+0000到u+00FF)。每个ISO-8859-1码前面补上一个空byte(0x00)后才是相应的Unicode码?br />和我们切w相关的Unihan主要分布在u+3400到u+F9FFF之间QGB2312和BIG5主要分布在u+4E00到U+9FFF之间?br />
UTF-8的编码原理和Ҏ:
知道了西Ƨ字W和汉字在Unicode中的位置后,来看看UTF-8
U+0000~U+007E 1 _ _ _ _ _ _ _ (7bits)
U+0080~U+07FF 1 1 0_ _ _ _ _ 1 0_ _ _ _ _ _ (11bits)
U+0800~U+FFFF 1 1 1 0 _ _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _ (16bits)
看一看Unicode三种格式提出自由的bitsQ下划线IZQ是否以用来代表区位中各Unicode码,刚好够用?br />那么当程序处理UTF-8~码文gӞ如何得知一个字W的疆界落在哪里Q还有到底他是以三种形式那一中出现呢Q?br />每个以UTF-8~码的字W,不管是以一、二、三个bytes出现Q第一个byte前端都清楚地标示了该字符的byteL。如110U有两个1Q代表这U字W是以第二种方式出现Q由两个bytesl成。?110有三?Q表CU字W一点种方式出现Q由三个字节l成?br />每个多重byte的UTF-8~码有一个共同的通性,卛_中的W二个第三个byte, 一律以10两个bits开头。由于其中的最高位总设?Q可以很Ҏ和那些在UTF-8中只用一个Byte的ASCII字元区分开来,方便侦错?br />因ؓ上述设计特点QUTF-8和Unicode之间Q可以很Ҏ做双向自p{换,而不会丢׃Q何资料?/font>
解决办法Qؕ码问题在 NT操作pȝ我没怎么到q,但是在UNIX 或LINUXpȝ上出现的比较?br />׃操作pȝ和用环境不一P产生q的方式也不一P但是如果掌握了上面的Unicode ~码原理Q自׃l分析一下,很多问题便可q刃而解?br />下面看看几个常见的例子?br />1Q?如果一些网站服务器例如Tomcat 如果遇到中文q问题Q可以修改conf目录下的server.xml
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100" debug="0"connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/>
URIENcoding 设成GBK或GB2312
2Q?表单中或传递字W串Q本来输入的汉字是正常的Q但是提交后再显C出来是qQ因为提交的一般是 ISO8859~码Q所以显C的时候要转成GB2312~码Q?br />
String S=new String(rs.getString("news").getBytes("gb2312"),"ISO8859_1");
//rs为待转换的字W串
然后使用S字符串的值就可以?br />3Q?有的服务器端的语a环境如果设成体中文的也可以解xc问?br />4Q?插入数据库中的字W是q
看看数据库中支持的是何种~码方式Q用cM2中的方式作一下{换即可?br />5Q?MQ用jsp开发,到qQ你得分析是ȝ时候发生ؕ码,q是写的时候发生ؕ码,?中的转换Q基本就能解决问题,有些时候写的时候做一ơ{换,例如Q?br />String S=new String(rs.getString("news").getBytes("gb2312"),"ISO8859_1");
//ȝ时候在转换回来
String S=new String(rs.getString("news").getBytes("ISO8859_1"),"GB2312");
或者把ISO8859-1和GB2312 的位|换一下,自己多试试,p扑ֈ解决问题的办法?/span>
来自Q?a >http://blog.csdn.net/softj/archive/2006/03/15/625193.aspx

]]>
վ֩ģ壺
|
ͻȪ|
Դ|
Ƿ|
|
|
|
Ӻ|
|
|
|
ֹ|
|
üɽ|
|
|
ij|
ٹ|
|
|
|
|
Ҫ|
Զ|
|
|
˷|
˾|
|
|
|
|
ɳ|
ƽ|
|
ʦ|
|
|
|
۶|
ء|