﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-Java之旅</title><link>http://www.blogjava.net/hoocoral/</link><description>Record my Java-learning progress.</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 14:31:49 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 14:31:49 GMT</pubDate><ttl>60</ttl><item><title>[转]JBoss deploy 出现 OutOfMemoryError : PermGen space</title><link>http://www.blogjava.net/hoocoral/articles/354841.html</link><dc:creator>胡昆栄</dc:creator><author>胡昆栄</author><pubDate>Fri, 22 Jul 2011 03:47:00 GMT</pubDate><guid>http://www.blogjava.net/hoocoral/articles/354841.html</guid><wfw:comment>http://www.blogjava.net/hoocoral/comments/354841.html</wfw:comment><comments>http://www.blogjava.net/hoocoral/articles/354841.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hoocoral/comments/commentRss/354841.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hoocoral/services/trackbacks/354841.html</trackback:ping><description><![CDATA[<span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="line-height: 20px; font-family: verdana, Arial, helvetica, sans-seriff; color: rgb(75,75,75); font-size: 13px" class="Apple-style-span"> 
<p style="box-sizing: border-box; font-size: 10pt">PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出，解决方法也一定是加大内存。说说为什么会内存益出：这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域，它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理，所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。</p>
<p style="box-sizing: border-box; font-size: 10pt">改正方法，在 run.bat 中加入：-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m</p>
<p style="box-sizing: border-box; font-size: 10pt">因为项目中引用了很多的 jar 包，而这些 jar 包中的 class 信息会被 JBoss 的 class loader 加载到 PermGen space 区域，在 JVM 默认的情况下，该部分空间的大小只有 4M，在 jar 包非常多的情况下，显然是不够用的，所以通过 -XX:MaxPermSize=256m 指定最大值后即可解决问题。</p>
<p style="box-sizing: border-box; font-size: 10pt">另外，如果 heap 内存不足出现 java.lang.OutOfMemoryError: Java heap space 时，可以通过 -Xmx512m 指定最大 heap 内存来解决这样的问题。</p></span></span><img src ="http://www.blogjava.net/hoocoral/aggbug/354841.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hoocoral/" target="_blank">胡昆栄</a> 2011-07-22 11:47 <a href="http://www.blogjava.net/hoocoral/articles/354841.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PV3D COLLADA模型的使用方法</title><link>http://www.blogjava.net/hoocoral/articles/317907.html</link><dc:creator>胡昆栄</dc:creator><author>胡昆栄</author><pubDate>Fri, 09 Apr 2010 17:59:00 GMT</pubDate><guid>http://www.blogjava.net/hoocoral/articles/317907.html</guid><wfw:comment>http://www.blogjava.net/hoocoral/comments/317907.html</wfw:comment><comments>http://www.blogjava.net/hoocoral/articles/317907.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hoocoral/comments/commentRss/317907.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hoocoral/services/trackbacks/317907.html</trackback:ping><description><![CDATA[<p style="padding-bottom: 0px; line-height: 1.8em; border-right-width: 0px; background-color: transparent; text-indent: 2em; margin: 0.7em 0px; padding-left: 0px; outline-width: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; font-size: 14px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial"><strong style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px; padding-left: 0px; outline-width: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; font-size: 14px; vertical-align: baseline; border-left-width: 0px; font-weight: bold; padding-top: 0px; background-origin: initial; background-clip: initial">1.Collada类</strong>：简便，但不支持骨骼等动画信息，适合导入静止的场景模型。<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.papervision3d.objects.parsers.Collada;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">引用的Collada包</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;var&nbsp;carcollada:Collada;</span><span style="color: #008000">//</span><span style="color: #008000">声明Collada为carcollada</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />var&nbsp;carcollada</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Collada(</span><span style="color: #000000">"</span><span style="color: #000000">模型.XML或dae</span><span style="color: #000000">"</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">导入外部模型文件</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">carcollada.addEventListener(FileLoadEvent.LOAD_COMPLETE,&nbsp;完成后该怎么办的方法);</span></div>
</p>
<br />
<p style="padding-bottom: 0px; line-height: 1.8em; border-right-width: 0px; background-color: transparent; text-indent: 2em; margin: 0.7em 0px; padding-left: 0px; outline-width: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; font-size: 14px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px; background-origin: initial; background-clip: initial"><strong style="padding-bottom: 0px; border-right-width: 0px; background-color: transparent; margin: 0px; padding-left: 0px; outline-width: 0px; padding-right: 0px; border-top-width: 0px; border-bottom-width: 0px; font-size: 14px; vertical-align: baseline; border-left-width: 0px; font-weight: bold; padding-top: 0px; background-origin: initial; background-clip: initial">2.Dae类</strong>：声明多几步，读取慢一点，支持骨骼动画等，而且还在不断添加新的功能。<br />
</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.papervision3d.objects.parsers.DAE;</span><span style="color: #008000">//</span><span style="color: #008000">引用的DAE包</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;var&nbsp;cardae:DAE</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DAE(</span><span style="color: #0000ff">true</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">声明DAE为cardae</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />cardae.load(</span><span style="color: #000000">"</span><span style="color: #000000">模型.XML或dae</span><span style="color: #000000">"</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">导入外部模型文件</span></div>
<img src ="http://www.blogjava.net/hoocoral/aggbug/317907.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hoocoral/" target="_blank">胡昆栄</a> 2010-04-10 01:59 <a href="http://www.blogjava.net/hoocoral/articles/317907.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>调用可能未定义的方法 load/data (通过 static 类型 flash.net:FileReference 引用)</title><link>http://www.blogjava.net/hoocoral/articles/311625.html</link><dc:creator>胡昆栄</dc:creator><author>胡昆栄</author><pubDate>Tue, 02 Feb 2010 02:21:00 GMT</pubDate><guid>http://www.blogjava.net/hoocoral/articles/311625.html</guid><wfw:comment>http://www.blogjava.net/hoocoral/comments/311625.html</wfw:comment><comments>http://www.blogjava.net/hoocoral/articles/311625.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hoocoral/comments/commentRss/311625.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hoocoral/services/trackbacks/311625.html</trackback:ping><description><![CDATA[今天在研究Flex的时候，从CVS取下的Source报以下错误：
<div>调用可能未定义的方法 load (通过 static 类型 flash.net:FileReference 引用)。</div>
<div>访问可能未定义的属性 data (通过 static 类型 flash.net:FileReference 引用)。</div>
<div><br />
</div>
<div>查了API后，发现官方API与本地API对不起来，于是把FlexBuilder升级更新到3.0.2后，此问题解决。</div>
<img src ="http://www.blogjava.net/hoocoral/aggbug/311625.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hoocoral/" target="_blank">胡昆栄</a> 2010-02-02 10:21 <a href="http://www.blogjava.net/hoocoral/articles/311625.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>改变FLEX中Tree控件的外观</title><link>http://www.blogjava.net/hoocoral/articles/308387.html</link><dc:creator>胡昆栄</dc:creator><author>胡昆栄</author><pubDate>Wed, 06 Jan 2010 02:01:00 GMT</pubDate><guid>http://www.blogjava.net/hoocoral/articles/308387.html</guid><wfw:comment>http://www.blogjava.net/hoocoral/comments/308387.html</wfw:comment><comments>http://www.blogjava.net/hoocoral/articles/308387.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hoocoral/comments/commentRss/308387.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hoocoral/services/trackbacks/308387.html</trackback:ping><description><![CDATA[<span  style="color: #333333; font-family: 'Trebuchet MS', Georgia, Arial, Helvetica, sans-serif; font-size: 13px; ">
<p style="line-height: 1.67em; ">使用Flex中的Tree控件时候，你可能很不喜欢它默认的外观。那个尖尖的箭头和节点前面丑陋的图标很难看。如果需要改变它，可以使用下面几个属性：</p>
<ul style="line-height: 1.67em; ">
    <li>disclosureClosedIcon</li>
    <li>disclosureOpenIcon</li>
    <li>folderClosedIcon</li>
    <li>folderOpenIcon</li>
    <li>defaultLeafIcon</li>
</ul>
</span>
<img src ="http://www.blogjava.net/hoocoral/aggbug/308387.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hoocoral/" target="_blank">胡昆栄</a> 2010-01-06 10:01 <a href="http://www.blogjava.net/hoocoral/articles/308387.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]System.getProperty()</title><link>http://www.blogjava.net/hoocoral/articles/305486.html</link><dc:creator>胡昆栄</dc:creator><author>胡昆栄</author><pubDate>Thu, 10 Dec 2009 14:14:00 GMT</pubDate><guid>http://www.blogjava.net/hoocoral/articles/305486.html</guid><wfw:comment>http://www.blogjava.net/hoocoral/comments/305486.html</wfw:comment><comments>http://www.blogjava.net/hoocoral/articles/305486.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hoocoral/comments/commentRss/305486.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hoocoral/services/trackbacks/305486.html</trackback:ping><description><![CDATA[<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #008000">//</span><span style="color: #008000">java&nbsp;通过System.getProperties()获取系统参数</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;Properties&nbsp;props</span><span style="color: #000000">=</span><span style="color: #000000">System.getProperties();&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">系统属性</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的运行环境版本：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.version</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的运行环境供应商：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.vendor</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java供应商的URL：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.vendor.url</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的安装路径：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.home</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的虚拟机规范版本：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.vm.specification.version</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的虚拟机规范供应商：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.vm.specification.vendor</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的虚拟机规范名称：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.vm.specification.name</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的虚拟机实现版本：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.vm.version</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的虚拟机实现供应商：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.vm.vendor</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的虚拟机实现名称：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.vm.name</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java运行时环境规范版本：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.specification.version</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java运行时环境规范供应商：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.specification.vender</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java运行时环境规范名称：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.specification.name</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的类格式版本号：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.class.version</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Java的类路径：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.class.path</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">加载库时搜索的路径列表：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.library.path</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">默认的临时文件路径：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.io.tmpdir</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">一个或多个扩展目录的路径：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">java.ext.dirs</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">操作系统的名称：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">os.name</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">操作系统的构架：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">os.arch</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">操作系统的版本：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">os.version</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">文件分隔符：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">file.separator</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在&nbsp;unix&nbsp;系统中是＂／＂</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">路径分隔符：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">path.separator</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在&nbsp;unix&nbsp;系统中是＂:＂</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">行分隔符：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">line.separator</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">在&nbsp;unix&nbsp;系统中是＂/n＂</span><span style="color: #008000"><br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">用户的账户名称：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">user.name</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">用户的主目录：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">user.home</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">用户的当前工作目录：</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">props.getProperty(</span><span style="color: #000000">"</span><span style="color: #000000">user.dir</span><span style="color: #000000">"</span><span style="color: #000000">));</span></div>
<img src ="http://www.blogjava.net/hoocoral/aggbug/305486.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hoocoral/" target="_blank">胡昆栄</a> 2009-12-10 22:14 <a href="http://www.blogjava.net/hoocoral/articles/305486.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]VSS2005补丁列表</title><link>http://www.blogjava.net/hoocoral/articles/300338.html</link><dc:creator>胡昆栄</dc:creator><author>胡昆栄</author><pubDate>Fri, 30 Oct 2009 05:59:00 GMT</pubDate><guid>http://www.blogjava.net/hoocoral/articles/300338.html</guid><wfw:comment>http://www.blogjava.net/hoocoral/comments/300338.html</wfw:comment><comments>http://www.blogjava.net/hoocoral/articles/300338.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hoocoral/comments/commentRss/300338.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hoocoral/services/trackbacks/300338.html</trackback:ping><description><![CDATA[<span  style="border-collapse: collapse; font-family: Helvetica, Arial, sans-serif; font-size: 14px; line-height: 22px; ">916688&nbsp;<a href="http://support.microsoft.com/kb/916688/" target="_blank" style="word-wrap: break-word; color: #006699; text-decoration: none; line-height: normal; ">http://support.microsoft.com/kb/916688/</a>) 修复: 在Windows 2000上使用与Visual Studio 2005集成的Visual SourceSafe 2005 局域网加速服务 时出现的错误消息：&#8220;无法使用SourceSafe 局域网服务&#8221;<br style="word-wrap: break-word; line-height: normal; " />
<br style="word-wrap: break-word; line-height: normal; " />
917491&nbsp;<a href="http://support.microsoft.com/kb/917491/" target="_blank" style="word-wrap: break-word; color: #006699; text-decoration: none; line-height: normal; ">http://support.microsoft.com/kb/917491/</a>) 修复: 使用&#8211; d 参数，Analyze.exe 实用工具可能会错误地移除Visual SourceSafe 2005中的文件和工程。<br style="word-wrap: break-word; line-height: normal; " />
<br style="word-wrap: break-word; line-height: normal; " />
925234&nbsp;<a href="http://support.microsoft.com/kb/925234/" target="_blank" style="word-wrap: break-word; color: #006699; text-decoration: none; line-height: normal; ">http://support.microsoft.com/kb/925234/</a>) 修复:可能无法打开或签出一个用Visual SourceSafe 2005签入的PDF文件。<br style="word-wrap: break-word; line-height: normal; " />
<br style="word-wrap: break-word; line-height: normal; " />
927004&nbsp;<a href="http://support.microsoft.com/kb/927004/" target="_blank" style="word-wrap: break-word; color: #006699; text-decoration: none; line-height: normal; ">http://support.microsoft.com/kb/927004/</a>) 修复: 在Visual SourceSafe 2005中对一个文件执行合并操作后，最多仅有3个帐号可以访问合并后的文件。<br style="word-wrap: break-word; line-height: normal; " />
<br style="word-wrap: break-word; line-height: normal; " />
923842&nbsp;<a href="http://support.microsoft.com/kb/923842/" target="_blank" style="word-wrap: break-word; color: #006699; text-decoration: none; line-height: normal; ">http://support.microsoft.com/kb/923842/</a>) 修复: 当在Visual SourceSafe 2005中使用 Analyze.exe 实用工具时，Analyze.log 文件中的错误消息: "文件 0\DATA\\ 不是一个有效的 SourceSafe 物理数据库文件"&nbsp;<br style="word-wrap: break-word; line-height: normal; " />
<br style="word-wrap: break-word; line-height: normal; " />
923434&nbsp;<a href="http://support.microsoft.com/kb/923434/" target="_blank" style="word-wrap: break-word; color: #006699; text-decoration: none; line-height: normal; ">http://support.microsoft.com/kb/923434/</a>) 修复:用Visual SourceSafe 2005签入后的PDF文件会出错损坏。<br style="word-wrap: break-word; line-height: normal; " />
<br style="word-wrap: break-word; line-height: normal; " />
924702&nbsp;<a href="http://support.microsoft.com/kb/924702/" target="_blank" style="word-wrap: break-word; color: #006699; text-decoration: none; line-height: normal; ">http://support.microsoft.com/kb/924702/</a>) 修复:在Visual SourceSafe 2005中把文件类型改成了UTF8后，你不能对一个文件的最新版本与它的任何早期版本进行比较。<br style="word-wrap: break-word; line-height: normal; " />
<br style="word-wrap: break-word; line-height: normal; " />
925275&nbsp;<a href="http://support.microsoft.com/kb/925275/" target="_blank" style="word-wrap: break-word; color: #006699; text-decoration: none; line-height: normal; ">http://support.microsoft.com/kb/925275/</a>) 修复:当你生成一个源文件的历史报告时, Visual SourceSafe 2005 可能会意外终止<br style="word-wrap: break-word; line-height: normal; " />
<br style="word-wrap: break-word; line-height: normal; " />
928392&nbsp;<a href="http://support.microsoft.com/kb/928392/" target="_blank" style="word-wrap: break-word; color: #006699; text-decoration: none; line-height: normal; ">http://support.microsoft.com/kb/928392/</a>) 修复:当你在Visual SourceSafe 6.0尝试签入一个有注释模板，且注释模板超过3行的文件时出现的错误消息: "读文件错误"&nbsp;<br style="word-wrap: break-word; line-height: normal; " />
<br style="word-wrap: break-word; line-height: normal; " />
927887&nbsp;<a href="http://support.microsoft.com/kb/927887/" target="_blank" style="word-wrap: break-word; color: #006699; text-decoration: none; line-height: normal; ">http://support.microsoft.com/kb/927887/</a>) 修复:当你在 Visual SourceSafe 2005 中用获取最新版本项去尝试获取一个最新版的XML文件时出现的的错误消息: "SourceSafe 没能完成写文件"&nbsp;<br style="word-wrap: break-word; line-height: normal; " />
<br style="word-wrap: break-word; line-height: normal; " />
<br style="word-wrap: break-word; line-height: normal; " />
930573&nbsp;<a href="http://support.microsoft.com/kb/930573/" target="_blank" style="word-wrap: break-word; color: #006699; text-decoration: none; line-height: normal; ">http://support.microsoft.com/kb/930573/</a>) 修复:当你在 "显示历史" 对话框中生成一个报告时Visual SourceSafe 2005 可能会停止响应<br style="word-wrap: break-word; line-height: normal; " />
<br style="word-wrap: break-word; line-height: normal; " />
932058&nbsp;<a href="http://support.microsoft.com/kb/932058/" target="_blank" style="word-wrap: break-word; color: #006699; text-decoration: none; line-height: normal; ">http://support.microsoft.com/kb/932058/</a>) 修复: 当你尝试把IVSSItem.AutoDetectEncoding 属性的值设为 "false"时， 如果此项目被 Visual SourceSafe 2005签出，将出现错误消息: "System.Runtime.InteropServices.COMException (0x8004D67F)"&nbsp;<br style="word-wrap: break-word; line-height: normal; " />
<br style="word-wrap: break-word; line-height: normal; " />
934723&nbsp;<a href="http://support.microsoft.com/kb/934723/" target="_blank" style="word-wrap: break-word; color: #006699; text-decoration: none; line-height: normal; ">http://support.microsoft.com/kb/934723/</a>) 修复: 在Visual SourceSafe 2005中使用 Get 命令取得一个文件的指定历史版本时，可能会收到一个错误消息。<br style="word-wrap: break-word; line-height: normal; " />
<br style="word-wrap: break-word; line-height: normal; " />
932874&nbsp;<a href="http://support.microsoft.com/kb/932874/" target="_blank" style="word-wrap: break-word; color: #006699; text-decoration: none; line-height: normal; ">http://support.microsoft.com/kb/932874/</a>) 修复: 当你签入一个大的二进制文件时，Visual SourceSafe 2005可能会停止响应 (挂起)<br style="word-wrap: break-word; line-height: normal; " />
<br style="word-wrap: break-word; line-height: normal; " />
转载请注明源自<a href="http://www.scmlife.com/" target="_blank" style="word-wrap: break-word; color: #006699; text-decoration: none; line-height: normal; ">www.SCMLife.com</a>,请保留版权.</span>
<img src ="http://www.blogjava.net/hoocoral/aggbug/300338.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hoocoral/" target="_blank">胡昆栄</a> 2009-10-30 13:59 <a href="http://www.blogjava.net/hoocoral/articles/300338.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex3 正式版 序列号</title><link>http://www.blogjava.net/hoocoral/articles/265887.html</link><dc:creator>胡昆栄</dc:creator><author>胡昆栄</author><pubDate>Wed, 15 Apr 2009 16:50:00 GMT</pubDate><guid>http://www.blogjava.net/hoocoral/articles/265887.html</guid><wfw:comment>http://www.blogjava.net/hoocoral/comments/265887.html</wfw:comment><comments>http://www.blogjava.net/hoocoral/articles/265887.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hoocoral/comments/commentRss/265887.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hoocoral/services/trackbacks/265887.html</trackback:ping><description><![CDATA[1377-4167-5844-4698-0048-5821
<img src ="http://www.blogjava.net/hoocoral/aggbug/265887.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hoocoral/" target="_blank">胡昆栄</a> 2009-04-16 00:50 <a href="http://www.blogjava.net/hoocoral/articles/265887.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]ASP.NET 中的正则表达式(二)</title><link>http://www.blogjava.net/hoocoral/articles/213957.html</link><dc:creator>胡昆栄</dc:creator><author>胡昆栄</author><pubDate>Thu, 10 Jul 2008 06:29:00 GMT</pubDate><guid>http://www.blogjava.net/hoocoral/articles/213957.html</guid><wfw:comment>http://www.blogjava.net/hoocoral/comments/213957.html</wfw:comment><comments>http://www.blogjava.net/hoocoral/articles/213957.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hoocoral/comments/commentRss/213957.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hoocoral/services/trackbacks/213957.html</trackback:ping><description><![CDATA[<h3>预定义的集合元字符</h3>
<p>使用目前提供的工具可以完成很多工作。但是，要使用 <strong>[0-9]</strong> 表示模式中的每个数值数字，或（更糟）使用 <strong>[0</strong> <strong>-9a</strong> <strong>-zA-Z]</strong>表示任何字母数字字符，还有一段相当漫长的过程。为了减轻处理这些常用但冗长模式的痛苦，事先定义了预定义元字符集合。正则表达式的不同实现定义了不同的预定义元字符集合，下面描述的预定义元字符集合在 .NET Framework 中得到 <strong>System.Text.RegularExpressions</strong> API 的支持。这些预定义元字符的标准语法是，在反斜杠 <strong>\</strong> 后跟一个或多个字符。多数预定义元字符只有一个字符，它们的使用很容易，是冗长字符类的理想替代字符。以下是两个示例：<strong>\d</strong> 匹配所有数值数字，<strong>\w</strong> 匹配所有单词字符（字母数字加下划线）。例外情况是一些特定字符代码匹配，此时必须指定所匹配字符的地址，如 <strong>\u000D </strong>将匹配 Unicode 回车符。下面列出一些最常用的字符类及其等效的元字符。</p>
<table>
    <tbody>
        <tr>
            <th>
            <p>元字符</p>
            </th>
            <th>
            <p>等效字符类</p>
            </th>
        </tr>
        <tr>
            <td>
            <p>\a</p>
            </td>
            <td>
            <p>匹配铃声（警报）；\u0007</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\b</p>
            </td>
            <td>
            <p>匹配字符类外的字边界，它匹配退格字符，\u0008</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\t</p>
            </td>
            <td>
            <p>匹配制表符，\u0009</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\r</p>
            </td>
            <td>
            <p>匹配回车符，\u000D</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\w</p>
            </td>
            <td>
            <p>匹配垂直制表符，\u000B</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\f</p>
            </td>
            <td>
            <p>匹配换页符，\u000C</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\n</p>
            </td>
            <td>
            <p>匹配新行，\u000A</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\e</p>
            </td>
            <td>
            <p>匹配转义符，\u001B</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\040</p>
            </td>
            <td>
            <p>匹配 3 位 8 进制 ASCII 字符。\040 表示空格（十进制数 32）。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\x20</p>
            </td>
            <td>
            <p>使用 2 位 16 进制数匹配 ASCII 字符。此例中，\x2- 表示空格。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\cC</p>
            </td>
            <td>
            <p>匹配 ASCII 控制字符，此例中是 ctrl-C。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\u0020</p>
            </td>
            <td>
            <p>使用 4 位 16 进制数匹配 Unicode 字符。此例中 \u0020 是空格。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\*</p>
            </td>
            <td>
            <p>不代表预定义字符类的任意字符都只作为该字符本身对待。因此，<strong>\*</strong> 等同于 <strong>\x</strong> <strong>2A</strong>（是文字 *，不是 * 元字符）。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\p{name}</p>
            </td>
            <td>
            <p>匹配已命名字符类&#8220;name&#8221;中的任意字符。支持名称是 Unicode 组和块范围。例如，Ll、Nd、Z、IsGreek、IsBoxDrawing 和 Sc（货币）。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\p{name}</p>
            </td>
            <td>
            <p>匹配已命名字符类&#8220;name&#8221;中不包括的文本。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\w</p>
            </td>
            <td>
            <p>匹配任意单词字符。对于非 Unicode 和 ECMAScript 实现，这等同于 <strong>[a-zA-Z_0-9]</strong>。在 Unicode 类别中，这等同于 <strong>[\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]</strong>。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\W</p>
            </td>
            <td>
            <p>\w 的否定，等效于 ECMAScript 兼容集合 <strong>[^a-zA-Z_0-9]</strong> 或 Unicode 字符类别 <strong>[^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]</strong>。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\s</p>
            </td>
            <td>
            <p>匹配任意空白区域字符。等效于 Unicode 字符类 <strong>[\f\n\r\t\v\x85\p{Z}]</strong>。如果使用 ECMAScript 选项指定 ECMAScript 兼容方式，\s 等效于 <strong>[ \f\n\r\t\v] </strong>（请注意前导空格）。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\S</p>
            </td>
            <td>
            <p>匹配任意非空白区域字符。等效于 Unicode 字符类别 <strong>[^\f\n\r\t\v\x85\p{Z}]</strong>。如果使用 ECMAScript 选项指定 ECMAScript 兼容方式，\S 等效于 <strong>[^ \f\n\r\t\v]</strong> （请注意 ^ 后的空格）。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\d</p>
            </td>
            <td>
            <p>匹配任意十进制数字。在 ECMAScript 方式下，等效于 Unicode 的 <strong>[\p{Nd}]</strong>、非 Unicode 的 <strong>[0-9]</strong>。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>\D</p>
            </td>
            <td>
            <p>匹配任意非十进制数字。在 ECMAScript 方式下，等效于 Unicode 的 <strong>[\p{Nd}]</strong>、非 Unicode 的 <strong>[^0-9]</strong>。</p>
            </td>
        </tr>
    </tbody>
</table>
<table>
    <tbody>
    </tbody>
</table>
<div><a href="http://msdn2.microsoft.com/zh-cn/library/ms972966.aspx#mainSection"><img src="http://msdn2.microsoft.com/zh-cn/library/ms972966.arrow_px_up(zh-cn,MSDN.10).gif" border="0"  alt="" /> </a><a href="http://msdn2.microsoft.com/zh-cn/library/ms972966.aspx#mainSection">返回页首</a></div>
<h3>表达式示例</h3>
<p>很多人都喜欢通过示例学习，下面即提供一些表达式示例。要获取更多示例，请访问以下地址中的正则表达式联机数据库：<a href="http://www.regexlib.com/">http://www.regexlib.com/</a>。</p>
<table>
    <tbody>
        <tr>
            <th>
            <p>模式</p>
            </th>
            <th>
            <p>说明</p>
            </th>
        </tr>
        <tr>
            <td>
            <p>^\d{5}$</p>
            </td>
            <td>
            <p>5 个数值数字，如美国邮政编码。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>^(\d{5})|(\d{5}-\d{4}$</p>
            </td>
            <td>
            <p>5 个数值数字或 5 个数字-短划线-4 个数字。匹配 5 位数字格式的美国邮政编码，或 5 位数字 + 4 位数字格式的美国邮政编码。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>^(\d{5}(-\d{4})?$</p>
            </td>
            <td>
            <p>与前一个相同，但更有效。使用 ? 可使模式中的 4 位数字成为可选部分，而不是要求分别比较不同的两个模式（通过另一种方式）。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>^[+-]?\d+(\.\d+)?$</p>
            </td>
            <td>
            <p>匹配任意有可选符号的实数。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>^[+-]?\d*\.?\d*$</p>
            </td>
            <td>
            <p>与上一个相同，但也匹配空字符串。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>^(20|21|22|23|[01]\d)[0-5]\d$</p>
            </td>
            <td>
            <p>匹配 24 小时制时间值。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>/\*.*\*/</p>
            </td>
            <td>
            <p>匹配 C 语言风格的注释 /* ... */</p>
            </td>
        </tr>
    </tbody>
</table>
<table>
    <tbody>
    </tbody>
</table>
<div><a href="http://msdn2.microsoft.com/zh-cn/library/ms972966.aspx#mainSection"><img src="http://msdn2.microsoft.com/zh-cn/library/ms972966.arrow_px_up(zh-cn,MSDN.10).gif" border="0"  alt="" /> </a><a href="http://msdn2.microsoft.com/zh-cn/library/ms972966.aspx#mainSection">返回页首</a></div>
<h3>ASP.NET 中的验证</h3>
<p>ASP.NET 提供了一套验证控件，与使用旧的（或愿意的话使用传统的） ASP 处理任务相比，验证控件使在 Web 窗体上验证输入变得非常容易。其中一个非常有效的验证器是 <strong>RegularExpressionValidator</strong>，如您所料，它允许您提供必须匹配输入的正则表达式来验证输入。设置控件的 <strong>ValidationExpression</strong> 属性可指定正则表达式的模式。下面显示了验证邮政代码字段的验证程序：</p>
<pre>&lt;asp:RegularExpressionValidator runat="server" id="ZipCodeValidator"
ControlToValidate="ZipCodeTextBox" ErrorMessage="Invalid ZIP code
format; format should be either 12345 or 12345-6789."
ValidationExpression="(\d{5}(-\d{4})?" /&gt;</pre>
<p>使用 <strong>RegularExpressionValidator</strong> 要注意几个问题：</p>
<ul>
    <li>
    <p>决不要使用验证程序要验证的控件中的空字符串来激活验证器。只有 RequiredFieldValidator 才可以捕获空字符串。</p>
    <li>
    <p>您无需指定匹配字符的开始与结尾（<strong>^</strong> 和<strong>$</strong>）- 它们是事先假设的。如果添加了开始与结尾，也没有任何影响，不需要这样做。</p>
    <li>
    <p>对于所有验证控件来说，必须在客户端以及服务器端进行验证。如果正则表达式不是 ECMAScript 兼容方式，客户端验证将失败。为了避免这种情况，确保表达式是 ECMAScript 兼容方式，否则只在服务器端进行控件验证。</p>
    </li>
</ul>
<div><a href="http://msdn2.microsoft.com/zh-cn/library/ms972966.aspx#mainSection"><img src="http://msdn2.microsoft.com/zh-cn/library/ms972966.arrow_px_up(zh-cn,MSDN.10).gif" border="0"  alt="" /> </a><a href="http://msdn2.microsoft.com/zh-cn/library/ms972966.aspx#mainSection">返回页首</a></div>
<h3>正则表达式 API</h3>
<p>除了 ASP.NET 验证控件，在.NET 中使用正则表达式的大多数情况都要使用 <strong>System.Text.RegularExpressions</strong> 命名空间中发现的类。特别是那些您希望熟悉的主类 <strong>Regex</strong>、<strong>Match</strong> 和 <strong>MatchCollection</strong>。</p>
<p>顺便说一下，正则表达式缩写样式 regex 的发音究竟是 /reg-eks/ 还是 /rej-eks/，还有一些争议。本人倾向于后者，但两种发音都有专家赞同，所以选择哪个发音由您自己决定。</p>
<p><strong>Regex</strong> 类有大量的方法和属性，如果您以前没有用过它，可能会感到无所适从。下面汇总了一些最常用的方法：</p>
<table>
    <tbody>
        <tr>
            <th>
            <p>方法</p>
            </th>
            <th>
            <p>说明</p>
            </th>
        </tr>
        <tr>
            <td>
            <p>Escape / Unescape</p>
            </td>
            <td>
            <p>字符串中的转义元字符，用作表达式中的文字。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>IsMatch</p>
            </td>
            <td>
            <p>如果正则表达式在输入字符串中发现匹配，返回&#8220;Ture&#8221;。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>Match</p>
            </td>
            <td>
            <p>如果在输入字符串中发现匹配，则返回匹配对象。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>Matches</p>
            </td>
            <td>
            <p>如果在输入字符串中发现包含任何或全部匹配，则返回匹配集合对象。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>Replace</p>
            </td>
            <td>
            <p>用给定的替换字符串替换输入字符串中的匹配。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>Split</p>
            </td>
            <td>
            <p>将输入字符串拆分成用正则表达式匹配分开的数组元素时，返回数组字符串。</p>
            </td>
        </tr>
    </tbody>
</table>
<table>
    <tbody>
    </tbody>
</table>
<p>除了指定很多方法外，还有一些选项可以指定，通常在 <strong>Regex</strong> 对象构造函数中。由于这些选项是位屏蔽的一部分，或许可以同时指定这些选项（如，可以同时指定 Multiline 和 Singleline）。</p>
<table>
    <tbody>
        <tr>
            <th>
            <p>方法</p>
            </th>
            <th>
            <p>说明</p>
            </th>
        </tr>
        <tr>
            <td>
            <p>Compiled</p>
            </td>
            <td>
            <p>当在循环中执行许多匹配操作时使用此选项。这可以节省每一循环的分析表达式步骤。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>Multiline</p>
            </td>
            <td>
            <p>它与输入字符串中的行数没有关系。确切地说，它只修改 <strong>^</strong> 和 <strong>$</strong> 的方式，以便匹配行开始 (BOL) 和行结尾 (EOL)，而不是匹配整个输入字符串的开始和结尾。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>IgnoreCase</p>
            </td>
            <td>
            <p>使模式在匹配搜索字符串时忽略大小写。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>IgnorePatternWhitespace</p>
            </td>
            <td>
            <p>允许根据需要在模式中包括任意数量的空白区域，也支持使用 (?# 注释 #) 语法在模式中加入注释。</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>SingleLine</p>
            </td>
            <td>
            <p>它与输入字符串中的行数没有关系。更确切地说，它将导致 <strong>.</strong>（句点）元字符匹配任意字符，而不是除 \n 之外的任意字符（默认情况）。</p>
            </td>
        </tr>
    </tbody>
</table>
<table>
    <tbody>
    </tbody>
</table>
<p>使用正则表达式常执行的操作包括：验证、匹配和替换。大多数情况下，可以使用 <strong>Regex</strong> 类的静态方法完成这些操作，不需要实例化 <strong>Regex</strong> 类本身。要执行验证，全部要做的就是必建或找到正确的表达式，然后使用 <strong>Regex</strong> 类的 IsMatch() 方法将表达式应用到输入字符串中。例如，下面的函数演示了如何使用正则表达式验证邮政编码：</p>
<pre>private void ValidateZipButton_Click(object sender, System.EventArgs e)
{
String ZipRegex = @"^\d{5}$";
if(Regex.IsMatch(ZipTextBox.Text, ZipRegex))
{
ResultLabel.Text = "ZIP is valid!";
}
else
{
ResultLabel.Text = "ZIP is invalid!";
}
}</pre>
<p>类似的，可以使用静态 Replace() 方法将匹配替换为特定字符串，如下所示：</p>
<pre>String newText = Regex.Replace(inputString, pattern, replacementText);</pre>
<p>最后，可以使用如下代码遍历输入字符串的匹配集合：</p>
<pre>private void MatchButton_Click(object sender, System.EventArgs e)
{
MatchCollection matches = Regex.Matches(SearchStringTextBox.Text,
MatchExpressionTextBox.Text);
MatchCountLabel.Text = matches.Count.ToString();
MatchesLabel.Text = "";
foreach(Match match in matches)
{
MatchesLabel.Text += "Found" + match.ToString() + " at
position " + match.Index + ".&lt;br&gt;";
}
}</pre>
<p>通常，在您需要指定默认方式以外的方式时，需要实例化 <strong>Regex</strong> 类的实例。特别是在设置选项时。例如，要创建忽略大小写和模式空白区域的 Regex 实例，然后检索与该表达式匹配的集合，则应使用如下代码：</p>
<pre>Regex re = new Regex(pattern,
&nbsp;&nbsp;&nbsp; RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
MatchCollection mc = re.Matches(inputString);</pre>
<p>本文的下载文件中包括这些示例的完整使用版本，与简单 ASP.NET 页中的一样。</p>
<div><a href="http://msdn2.microsoft.com/zh-cn/library/ms972966.aspx#mainSection"><img src="http://msdn2.microsoft.com/zh-cn/library/ms972966.arrow_px_up(zh-cn,MSDN.10).gif" border="0"  alt="" /> </a><a href="http://msdn2.microsoft.com/zh-cn/library/ms972966.aspx#mainSection">返回页首</a></div>
<h3>免费工具</h3>
<p>Regulator (<a href="http://royo.is-a-geek.com/iserializable/regulator/">http://royo.is-a-geek.com/iserializable/regulator/</a>) - 一种在客户端运行的正则表达式测试工具，通过 Web 服务与 RegexLib 紧密集成，提供对&#8220;匹配&#8221;、&#8220;拆分&#8221;和&#8220;替换&#8221;等的支持。包括性能分析和语法突出显示功能。</p>
<p>RegexDesigner.NET (<a href="http://www.sellsbrothers.com/tools/">http://www.sellsbrothers.com/tools/</a>) - 一种功能强大的可视工具，可帮助构造并测试正则表达式。它可生成 C# 和/或 VB.NET 代码和已编译汇编代码，帮助您将表达式集成到应用程序中。</p>
<p>Regular Expression Workbench (v2.0) (<a href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=C712F2DF-B026-4D58-8961-4EE2729D7322">http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=C712F2DF-B026-4D58-8961-4EE2729D7322</a>) - Eric Gunnerson 开发的工具，用于创建、测试和研究正则表达式。具有&#8220;Examine-o-matic&#8221;功能，允许将鼠标悬停在正则表达式的上方，对其含义进行解码。</p>
<div><a href="http://msdn2.microsoft.com/zh-cn/library/ms972966.aspx#mainSection"><img src="http://msdn2.microsoft.com/zh-cn/library/ms972966.arrow_px_up(zh-cn,MSDN.10).gif" border="0"  alt="" /> </a><a href="http://msdn2.microsoft.com/zh-cn/library/ms972966.aspx#mainSection">返回页首</a></div>
<h3>高级主题</h3>
<p>正则表达式有两个不得不说的功能，一个是&#8220;命名组&#8221;，另一个是&#8220;四向处理&#8221;(lookaround processing)。由于这些功能很少使用，此处只简单阐述一下。</p>
<p>使用命名组，您可单独命名匹配组，然后在表达式中使用程序语言引用这些组。如果结合 Replace 方法重新设置输入字符串的格式（通过重新排列顺序、替换输入字符串中的元素），这个功能特别有效。例如，假设日期使用 MM/DD/YYYY 格式的字符串，而您希望日期格式是 DD-MM-YYYY。此时，可编写一个表达式捕获第一种格式，遍历它的匹配集合，并分析每个字符串，然后使用字符串操作建立替换字符串。这需要大量的代码和大量的处理。如果使用命名组，您可完成同样的任务，具体见下：</p>
<pre>String MDYToDMY(String input)
{
return Regex.Replace(intput, @"\b(?&lt;month&gt;\d{1,2})/(?&lt;day&gt;\d{1,2}/(?&lt;year&gt;\d{4})\b", "${day}-
${month}-${year}");
}</pre>
<p>您还可以按编号或按名称引用组。在任何情况下，这种引用通称作&#8220;反向引用&#8221;。另一个经常使用反向引用的场合在匹配表达式本身，如下这个表达式用于查找重复的字母：<strong>[a-z]\1</strong>。它将匹配&#8220;aa&#8221;、&#8220;bb&#8221;、&#8220;cc&#8221;，但它不同于 <strong>[a-z]{2}</strong> 或 <strong>[a-z][a-z]</strong>，后两者是等效的，后两者允许匹配&#8220;ab&#8221;或&#8220;ac&#8221;或任何其他两个字母的组合。反向引用允许表达式记住表达式已经分析并匹配过的输入字符串中的部分字符。</p>
<p>&#8220;四向处理&#8221;指很多正则表达式引擎所支持的正负 Lookahead 和 Lookbehind 功能。并不是所有的正则表达式引擎都支持验证四向处理。这些构造不使用字符，即使它们可以匹配字符。有些模式可能在不使用四向处理的情况下无法描述。特别是当模式中存在的一部分依赖于另一部分，如果不使用四向处理，则不能描述这样的模式。下面介绍了每个四向处理的语法。</p>
<table>
    <tbody>
        <tr>
            <th>
            <p>语法</p>
            </th>
            <th>
            <p>说明</p>
            </th>
        </tr>
        <tr>
            <td>
            <p>(?=...)</p>
            </td>
            <td>
            <p>正 Lookahead</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>(?!...)</p>
            </td>
            <td>
            <p>负 Lookahead</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>(?&lt;=...)</p>
            </td>
            <td>
            <p>正 Lookbehind</p>
            </td>
        </tr>
        <tr>
            <td>
            <p>(?&lt;!...)</p>
            </td>
            <td>
            <p>负 Lookbehind</p>
            </td>
        </tr>
    </tbody>
</table>
<table>
    <tbody>
    </tbody>
</table>
<p>密码验证是必需四向处理的一个示例。假定在密码限制中，密码必须介于 4 到 8 个字符，且必须至少包含一个数字。为此，您可以仅在匹配中测试 <strong>\d</strong>，然后使用字符串操作来测试长度。但要在正则表达式中实现这一切，必须使用 Lookahead。特别是正 lookahead，如下所示：<strong>^(?=.*\d).{4,8}$</strong></p>
<div><a href="http://msdn2.microsoft.com/zh-cn/library/ms972966.aspx#mainSection"><img src="http://msdn2.microsoft.com/zh-cn/library/ms972966.arrow_px_up(zh-cn,MSDN.10).gif" border="0"  alt="" /> </a><a href="http://msdn2.microsoft.com/zh-cn/library/ms972966.aspx#mainSection">返回页首</a></div>
<h3>结论</h3>
<p>正则表达式是一种描述文本模式的极有效方法，它使文本模式成为字符串验证和操作的极好资源。.NET Framework 通过 <strong>System.Text.RegularExpressions</strong> 命名空间（特别是其中的 <strong>Regex</strong> 类）提供了对正则表达式的强大支持。使用 API 很简单，但编写正确的正则表达式通常比较费力。但幸运的是，正则表达式可以重复使用，您可以通过网络中的各种联机资源，从中找出其他人设计的表达式，或者在创建表达式遇到困难时得到帮助。</p>
<div><a href="http://msdn2.microsoft.com/zh-cn/library/ms972966.aspx#mainSection"><img src="http://msdn2.microsoft.com/zh-cn/library/ms972966.arrow_px_up(zh-cn,MSDN.10).gif" border="0"  alt="" /> </a><a href="http://msdn2.microsoft.com/zh-cn/library/ms972966.aspx#mainSection">返回页首</a></div>
<h3>资源</h3>
<p>正则表达式库 <a href="http://www.regexlib.com/">http://www.regexlib.com/</a></p>
<p>正则表达式讨论列表 <a href="http://aspadvice.com/login.aspx?ReturnUrl=/SignUp/list.aspx?l=68&amp;c=16&amp;l=68&amp;c=16">http://aspadvice.com/login.aspx?ReturnUrl=%2fSignUp%2flist.aspx%3fl%3d68%26c%3d16&amp;l=68&amp;c=16</a></p>
<p>正则表达式论坛 <a href="http://forums.regexadvice.com/">http://forums.regexadvice.com/</a></p>
<p>正则表达式 Web 日志 <a href="http://blogs.regexadvice.com/">http://blogs.regexadvice.com/</a></p>
<p>Mastering Regular Expressions (O'Reilly)，作者 Jeffrey Friedl <a href="http://www.regex.info/">http://www.regex.info/</a></p>
<p>.NET 正则表达式参考 <a href="http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemTextRegularExpressions.asp">http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemTextRegularExpressions.asp</a></p>
<p>Jscript 正则表达式语法 <a href="http://www.msdn.microsoft.com/library/en-us/script56/html/js56jsgrpRegExpSyntax.asp">http://www.msdn.microsoft.com/library/en-us/script56/html/js56jsgrpRegExpSyntax.asp</a></p>
<p>正则表达式信息 <a href="http://www.regular-expressions.info/">http://www.regular-expressions.info/</a></p>
<div>作者简介</div>
<p>Steven A. Smith 是 Microsoft 在 ASP.NET 技术方面的最有价值专家 (MVP)，是 ASPAlliance.com 和 DevAdvice.com 的总裁和所有者。此外，他也是 ASPSmith Ltd（一家重点提供 .NET 培训的公司）的所有者和首席教师。他撰写了两本著作：&#8220;ASP.NET Developer's Cookbook&#8221;和&#8220;ASP.NET By Example&#8221;，并在 MSDN 和 AspNetPRO 杂志上发表了一些文章。Steve 每年都在各种会议上发表演讲，是 INETA 联络处的成员。Steve 拥有企业管理硕士学位及计算机科学工程理学士学位。</p>
<img src ="http://www.blogjava.net/hoocoral/aggbug/213957.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hoocoral/" target="_blank">胡昆栄</a> 2008-07-10 14:29 <a href="http://www.blogjava.net/hoocoral/articles/213957.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.net打印实现方法备忘</title><link>http://www.blogjava.net/hoocoral/articles/210530.html</link><dc:creator>胡昆栄</dc:creator><author>胡昆栄</author><pubDate>Wed, 25 Jun 2008 05:35:00 GMT</pubDate><guid>http://www.blogjava.net/hoocoral/articles/210530.html</guid><wfw:comment>http://www.blogjava.net/hoocoral/comments/210530.html</wfw:comment><comments>http://www.blogjava.net/hoocoral/articles/210530.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hoocoral/comments/commentRss/210530.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hoocoral/services/trackbacks/210530.html</trackback:ping><description><![CDATA[<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">OBJECT&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">=WebBrowser&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">classid</span><span style="color: #0000ff">=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">height</span><span style="color: #0000ff">=0&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">width</span><span style="color: #0000ff">=0</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">OBJECT</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">=button&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">value</span><span style="color: #0000ff">=打印&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">onclick</span><span style="color: #0000ff">=document.all.WebBrowser.ExecWB(6,1)</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">=button&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">value</span><span style="color: #0000ff">=直接打印&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">onclick</span><span style="color: #0000ff">=document.all.WebBrowser.ExecWB(6,6)</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">=button&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">value</span><span style="color: #0000ff">=页面设置&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">onclick</span><span style="color: #0000ff">=document.all.WebBrowser.ExecWB(8,1)</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">=button&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">value</span><span style="color: #0000ff">=打印预览&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">onclick</span><span style="color: #0000ff">=document.all.WebBrowser.ExecWB(7,1)</span><span style="color: #0000ff">&gt;</span></div>
<img src ="http://www.blogjava.net/hoocoral/aggbug/210530.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hoocoral/" target="_blank">胡昆栄</a> 2008-06-25 13:35 <a href="http://www.blogjava.net/hoocoral/articles/210530.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GridView, DataGrid 中，DataFormatString语法汇总</title><link>http://www.blogjava.net/hoocoral/archive/2008/06/10/207000.html</link><dc:creator>胡昆栄</dc:creator><author>胡昆栄</author><pubDate>Tue, 10 Jun 2008 15:03:00 GMT</pubDate><guid>http://www.blogjava.net/hoocoral/archive/2008/06/10/207000.html</guid><wfw:comment>http://www.blogjava.net/hoocoral/comments/207000.html</wfw:comment><comments>http://www.blogjava.net/hoocoral/archive/2008/06/10/207000.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hoocoral/comments/commentRss/207000.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hoocoral/services/trackbacks/207000.html</trackback:ping><description><![CDATA[<p>DataFormatString格式字符串 <br />
DataFormatString="{0:格式字符串}"
<p>在DataFormatString 中的 {0} 表示数据本身，而在冒号后面的格式字符串代表所们希望数据显示的格式；
<p>数字、货币格式：<br />
在指定的格式符号后可以指定小数所要显示的位数。例如原来的数据为「1.56」，若格式设定为 {0:N1}，则输出为「1.5」。其常用的数值格式如下表所示：
<p>格式字符串 输入 结果 <br />
"{0:C}" 12345.6789 $12,345.68 <br />
"{0:C}" -12345.6789 ($12,345.68) <br />
"{0:D}" 12345 12345 <br />
"{0:D8}" 12345 00012345 <br />
"{0:E}" 12345.6789 1234568E+004 <br />
"{0:E10}" 12345.6789 1.2345678900E+004 <br />
"{0:F}" 12345.6789 12345.68 <br />
"{0:F0}" 12345.6789 12346 <br />
"{0:G}" 12345.6789 12345.6789 <br />
"{0:G7}" 123456789 1.234568E8 <br />
"{0:N}" 12345.6789 12,345.68 <br />
"{0:N4}" 123456789 123,456,789.0000 <br />
"Total: {0:C}" 12345.6789 Total: $12345.68
<p>常用的日期时间格式：
<p>格式 说明 输出格式 <br />
d 精简日期格式 MM/dd/yyyy <br />
D 详细日期格式 dddd, MMMM dd, yyyy <br />
f 完整格式 (long date + short time) dddd, MMMM dd, yyyy HH:mm <br />
F <br />
完整日期时间格式 <br />
(long date + long time) <br />
dddd, MMMM dd, yyyy HH:mm:ss <br />
g 一般格式 (short date + short time) MM/dd/yyyy HH:mm <br />
G 一般格式 (short date + long time) MM/dd/yyyy HH:mm:ss <br />
m,M 月日格式 MMMM dd <br />
s 适中日期时间格式 yyyy-MM-dd HH:mm:ss <br />
t 精简时间格式 HH:mm <br />
T 详细时间格式 HH:mm:ss </p>
<img src ="http://www.blogjava.net/hoocoral/aggbug/207000.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hoocoral/" target="_blank">胡昆栄</a> 2008-06-10 23:03 <a href="http://www.blogjava.net/hoocoral/archive/2008/06/10/207000.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>