100165489.htm
来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 153 行 · 第 1/2 页
HTM
153 行
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">该字符串指定表示法的格式。而这个格式可以是标准数字格式化字符串或者图形数字格式化字符串。对于预定义的标准数字格式化字符串,</span><span lang="EN-US">C</span><span style="FONT-FAMILY: 宋体">表示货币,</span><span lang="EN-US">D</span><span style="FONT-FAMILY: 宋体">表示小数,</span><span lang="EN-US">E</span><span style="FONT-FAMILY: 宋体">表示科学计数法,</span><span lang="EN-US">F</span><span style="FONT-FAMILY: 宋体">表示定点输出,</span><span lang="EN-US">G</span><span style="FONT-FAMILY: 宋体">表示一般输出,</span><span lang="EN-US">N</span><span style="FONT-FAMILY: 宋体">表示数字,</span><span lang="EN-US">X</span><span style="FONT-FAMILY: 宋体">表示</span><span lang="EN-US">16</span><span style="FONT-FAMILY: 宋体">进制。对于图形数字格式化字符串,可以指定位数、节和组分隔符、百分号等。图形数字格式字符串</span><span lang="EN-US">###</span><span style="FONT-FAMILY: 宋体">,</span><span lang="EN-US">###</span><span style="FONT-FAMILY: 宋体">表示两个</span><span lang="EN-US">3</span><span style="FONT-FAMILY: 宋体">位数块被一个组分隔符分开。</span></p>
<p class="MsoNormal"><span lang="EN-US">IFormatProvider</span><span style="FONT-FAMILY: 宋体">接口由</span><span lang="EN-US">NumberFormatInfo</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">DateTimeFormatInfo</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US"> CultureInfo</span><span style="FONT-FAMILY: 宋体">类实现。这个接口定义了方法</span><span lang="EN-US">GetFormat()</span><span style="FONT-FAMILY: 宋体">,返回一个格式化对象。</span></p>
<p class="MsoNormal"><span lang="EN-US">NumberFormatInfo</span><span style="FONT-FAMILY: 宋体">可以为数字定义定制的格式。使用</span><span lang="EN-US">NumberFormatInfo </span><span style="FONT-FAMILY: 宋体">的默认构造函数,可以创建独立于文化的对象或不变的对象。使用这个类的属性,可以改变所有的格式化选项,例如正号、百分号、数字组分隔符和货币符号等。静态属性</span><span lang="EN-US">InvariantInfo</span><span style="FONT-FAMILY: 宋体">返回一个与文化无关的只读</span><span lang="EN-US">NumberFormatInfo </span><span style="FONT-FAMILY: 宋体">对象。</span><span lang="EN-US">NumberFormatInfo </span><span style="FONT-FAMILY: 宋体">对象的格式化值取决于当前线程的</span><span lang="EN-US">CultureInfo</span><span style="FONT-FAMILY: 宋体">,它由静态属性</span><span lang="EN-US">CurrentInfo</span><span style="FONT-FAMILY: 宋体">返回。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">下一个示例使用了一个简单的控制台项目。在这段代码中,第一个示例显示了在当前线程的文化格式中所显示的数字</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">这里是</span><span lang="EN-US">English-US</span><span style="FONT-FAMILY: 宋体">,是操作系统的设置</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">。第二个示例使用了带有</span><span lang="EN-US">IFormatProvider </span><span style="FONT-FAMILY: 宋体">参数的</span><span lang="EN-US">ToString()</span><span style="FONT-FAMILY: 宋体">方法。</span><span lang="EN-US">CultureInfo </span><span style="FONT-FAMILY: 宋体">实现</span><span lang="EN-US">IFormatProvider</span><span style="FONT-FAMILY: 宋体">,所以创建了一个法国文化的</span><span lang="EN-US">CultureInfo </span><span style="FONT-FAMILY: 宋体">对象。第三个示例改变了当前线程的文化。使用</span><span lang="EN-US">Thread </span><span style="FONT-FAMILY: 宋体">实例的属性</span><span lang="EN-US">CurrentCulture</span><span style="FONT-FAMILY: 宋体">,把文化改为德国文化:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">using System;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">using System.Globalization;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">using System.Threading;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">namespace Wrox.ProCSharp.Localization</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">{</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> class Class1</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> {</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> static void Main(string[] args)</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> {</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> int val = 1234567890;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> // culture of the current thread</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </span><span lang="PT-BR">Console.WriteLine(val.ToString("N"));</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="PT-BR"> </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="PT-BR"> </span><span lang="EN-US">// use IFormatProvider</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> Console.WriteLine(val.ToString("N", new CultureInfo("fr-FR")));</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> // change the culture of the thread</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> Console.WriteLine(val.ToString("N"));</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> }</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> }</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">结果如图</span><span lang="EN-US">17-4</span><span style="FONT-FAMILY: 宋体">所示。可以把这个结果与前面列举的英国、法国和德国文化的结果进行比较。</span></p>
<p align="center"><span lang="EN-US"><img height="73" src="17/image004.jpg" width="212" alt="" /></span></p>
<p style="FTEL: .0001pt" align="center"><span style="FONT-FAMILY: 宋体">图</span><span lang="EN-US"> 17-4</span></p>
<h4 style="FTEL: 21.45pt"><span lang="EN-US">4. </span><span style="FONT-FAMILY: 黑体">日期格式</span></h4>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">对于日期,也提供了与数字类似的支持。</span><span lang="EN-US">DateTime</span><span style="FONT-FAMILY: 宋体">结构有一些把日期转换为字符串的方法。公共实例方法</span><span lang="EN-US">ToLongDateString()</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">ToLongTimeString()</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">ToShortDateString()</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">ToShortTime String()</span><span style="FONT-FAMILY: 宋体">都使用当前文化来创建字符串表示法。使用</span><span lang="EN-US">ToString()</span><span style="FONT-FAMILY: 宋体">法,可以指定另一种文化:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="ES">public string ToString();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="ES">public string ToString(IFormatProvider);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="ES">public string ToString(string);</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="ES">public string ToString(string, IFormatProvider);</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">使用</span><span lang="EN-US">ToString()</span><span style="FONT-FAMILY: 宋体">方法的字符串参数,可以指定预定义格式化字符或定制的格式化字符串,把日期类型转换为字符串类型。类</span><span lang="EN-US">DateTimeFormatInfo</span><span style="FONT-FAMILY: 宋体">指定了可能的值。使用</span><span lang="EN-US">IFormatProvider</span><span style="FONT-FAMILY: 宋体">参数可以指定文化。使用不带</span><span lang="EN-US">IFormatProvider</span><span style="FONT-FAMILY: 宋体">参数的重载方法,表示所使用的是当前线程的文化:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US"> DateTime d = new DateTime(2003, 08, 09);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> // current culture</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> Console.WriteLine(d.ToLongDateString());</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> // use IFormatProvider</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> Console.WriteLine(d.ToString("D", new CultureInfo("fr-FR")));</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> // use culture of thread</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> CultureInfo ci = Thread.CurrentThread.CurrentCulture;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="EN-US"> </span><span lang="PT-BR">Console.WriteLine(ci.ToString() + ": " + d.ToString("D"));</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="PT-BR"> </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="PT-BR"> </span><span lang="EN-US"> </span><span lang="PT-BR"> ci = new CultureInfo("es-ES");</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 13.5pt; FTEL: 18.45pt"><span lang="PT-BR"> </span><span lang="EN-US"> </span><span lang="PT-BR"> </span><span lang="EN-US">Thread.CurrentThread.CurrentCulture = ci;</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US"> Console.WriteLine(ci.ToString() + ": " + d.ToString("D"));</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">这个示例程序的结果说明了使用线程当前文化</span><span style="FONT-FAMILY: 宋体">的</span><span lang="ES">ToLongDateString()</span><span style="FONT-FAMILY: 宋体">,</span><span style="FONT-FAMILY: 宋体">给</span><span lang="ES">ToString()</span><span style="FONT-FAMILY: 宋体">方法传递一个</span><span lang="ES">CultureInfo </span><span style="FONT-FAMILY: 宋体">实例</span><span style="FONT-FAMILY: 宋体">,</span><span style="FONT-FAMILY: 宋体">则显示其法国版本</span><span style="FONT-FAMILY: 宋体">,</span><span style="FONT-FAMILY: 宋体">把线程的</span><span lang="ES">CurrentCulture</span><span style="FONT-FAMILY: 宋体">属性</span><span style="FONT-FAMILY: 宋体">改为</span><span lang="ES">es-ES</span><span style="FONT-FAMILY: 宋体">,</span><span style="FONT-FAMILY: 宋体">则显示其西班牙版本</span><span style="FONT-FAMILY: 宋体">,</span><span style="FONT-FAMILY: 宋体">如图</span><span lang="ES">17-5</span><span style="FONT-FAMILY: 宋体">所示。</span></p>
<p align="center"><span lang="EN-US"><img height="86" src="17/image005.jpg" width="229" alt="" /></span></p>
<p style="FTEL: 8.15pt" align="center"><span style="FONT-FAMILY: 宋体">图</span><span lang="EN-US"> 17-5</span></p></div>
<!-- page -->
<div class="page" style="text-align: center">
<a href="100165488.htm">上一页</a> <a href="index.html">首页</a> <a href="100165490.htm">下一页</a>
</div>
<div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
<div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
图书导读
</div>
<div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
<!--导读-->
<h1 id="divCurrentNode2" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165489.htm'><font color='red'>17.1.2 文化和区域</font></a></h1>
<div id="divRealteNod2" style="padding-left: 2px">
<div style='float:left;width:49%'>·<a href='100165486.htm'>16.7 小结</a></div><div style='float:right;width:49%'>·<a href='100165487.htm'>17.1 System.Globalization命名空间</a></div><div style='float:left;width:49%'>·<a href='100165488.htm'>17.1.1 Unicode问题</a></div><div style='float:right;width:49%'>·<a href='100165490.htm'>17.1.3 使用文化</a></div><div style='float:left;width:49%'>·<a href='100165491.htm'>17.1.4 排序</a></div><div style='float:right;width:49%'>·<a href='100165492.htm'>17.2 资源</a></div></div>
</div>
</div>
</div>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?