C#中利用正则表达式将人民币金额转换为大写汉字

直接来看代码:

public static string ConvertToChineseMoney(double money)
  {
    if (money < 0)
      throw new ArgumentOutOfRangeException("参数money不能为负值!");
    string s = money.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A");
    s = Regex.Replace(s, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L\.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[\.]|$))))", "${b}${z}");
    return Regex.Replace(s, ".", delegate(Match m) { return "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟萬億兆京垓秭穰"[m.Value[0] - '-'].ToString(); });
  }

调用该方法:

Random r = new Random();
for (int i = 0; i < 10; i++)
{
  double m = r.Next() / 100.0;
  Response.Write(m + "---- " + ConvertToChineseMoney(m) + "<br/>");
}

来测试一下,结果就像下面一样:

5970370.36---- 伍佰玖拾柒萬零叁佰柒拾元叁角陆分

6521548.6---- 陆佰伍拾贰萬壹仟伍佰肆拾捌元陆角

12179380.35---- 壹仟贰佰壹拾柒萬玖仟叁佰捌拾元叁角伍分

15742735.47---- 壹仟伍佰柒拾肆萬贰仟柒佰叁拾伍元肆角柒分

9236554.09---- 玖佰贰拾叁萬陆仟伍佰伍拾肆元零玖分

9706980.49---- 玖佰柒拾萬陆仟玖佰捌拾元肆角玖分

11873034.16---- 壹仟壹佰捌拾柒萬叁仟零叁拾肆元壹角陆分

21141596.22---- 贰仟壹佰壹拾肆萬壹仟伍佰玖拾陆元贰角贰分

17040243.44---- 壹仟柒佰零肆萬零贰佰肆拾叁元肆角肆分

5358585.54---- 伍佰叁拾伍萬捌仟伍佰捌拾伍元伍角肆分
(0)

相关推荐

  • 常用C#正则表达式汇总介绍

    有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就能看到好几个正则表达式的帖子,那段时间借助论坛以及Wrox Press出版的<C#字符串和正则表达式参考手册>学习了一些基础的知识,同时也为我在CSDN大概赚了1000分,今天想起来,去找<C#字符串和正则表达式参考手册>时,已经不知所踪了.现在用到正则的时候也比较少,把以前的笔记等整理一下,以志不忘. (1)"@"符号 符下两ows表研究室的火热,当晨在"@"虽然并非C#正则表达式

  • C#实现过滤html标签并保留a标签的方法

    本文实例展示C#实现过滤html标签,汉字间空格,制表符,并保留a标签的方法.分享给大家供大家参考之用.具体方法如下: 可以在公共类如Common中定义如下方法: public static string ClearHtmlExceptA(string html) { string acceptable = "a"; string stringPattern = @"</?(?(?=" + acceptable + @")notag|[a-zA-Z0

  • 谈谈C# replace在正则表达式中的意义

    多少年来,许多的编程语言和工具都包含对正则表达式的支持,.NET基础类库中包含有一个名字空间和一系列可以充分发挥规则表达式威力的类,而且它们也都与未来的Perl 5中的规则表达式兼容. 此外,regexp类还能够完成一些其他的功能,例如从右至左的结合模式和表达式的编辑等. 在这篇文章中,我将简要地介绍System.Text.RegularExPRession中的类和方法.一些字符串匹配和替换的例子以及组结构的详细情况,最后,还会介绍一些你可能会用到的常见的表达式. 应该掌握的基础知识 规则表达式

  • C#正则匹配RegexOptions选项的组合使用方法

    C#中使用正则所需要引用的命名空间是 using System.Text.RegularExpressions 它包含了8个类,用得最多是的Regex,Regex不仅可以用来创建正则表达式,而且提供了很多有用的方法. 首先来看一下如何创建一个Regex对象: new Regex(string pattern) new Regex(string pattern,RegexOptions options) 第一个参数是正则表达式字符串,第二个参数正则配置的选项,有以下几种选项: IgnoreCase

  • C#正则表达式之Regex类用法详解

    Regex 类表示不可变(只读)的正则表达式.它还包含各种静态方法,允许在不显式创建其他类的实例的情况下使用其他正则表达式类. 正则表达式基础概述 什么是正则表达式 在编写字符串的处理程序时,经常会有查找符合某些复杂规则的字符串的需要.正则表达式就是用于描述这些规则的工具.换句话说,正则表达式就是记录文本规则的代码. 通常,我们在使用WINDOWS查找文件时,会使用通配符(*和?).如果你想查找某个目录下的所有Word文档时,你就可以使用*.doc进行查找,在这里,*就被解释为任意字符串.和通配

  • C#正则表达式判断输入日期格式是否正确

    本文将介绍一段实例代码,来讲解利用正则表达式使C#判断输入日期格式是否正确的方法.希望这段代码能对大家有所帮助. 通常我们在用C#编写系统程序或者Web开发时,都会遇到需要验证输入的字符串是否是日期的情况,下面为大家介绍一种非常全面的用正则表达式验证日期的方法: c 正则表达式日期代码一: /// <summary> /// 是否为日期型字符串 /// </summary> /// <param name="StrSource">日期字符串(2008

  • C#正则表达式转义字符介绍

    正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串.将匹配的子串做替换或者从某个串中取出符合某个条件的子串等. 转义匹配语法: "\"+实际字符 \ . * + ? | ( ) { }^ $ [ ] 例如:\\匹配字符"\" \n 匹配换行 \r 匹配回车 \t 匹配水平制表符 \v 匹配垂直制表符 \f 匹配换页 \nnn 匹配一个8进制ASCII \xnn 匹配一个16进制ASCII \unnnn 匹

  • C#使用正则表达式过滤html标签

    在项目中遇到这样一个需求,需要将一段html转换为一般文本返回,万能的正则表达式来了. 正则表达式来拯救你,代码如下: public static string Html2Text(string htmlStr) { if (String.IsNullOrEmpty(htmlStr)) { return ""; } string regEx_style = "<style[^>]*?>[\\s\\S]*?<\\/style>"; //定

  • C#中正则表达式的3种匹配模式

    在C#中,我们一般使用Regex类来表示一个正则表达式.一般正则表达式引擎支持以下3种匹配模式:单行模式(Singleline).多行模式(Multiline)与忽略大小写(IgnoreCase). 1. 单行模式(Singleline) MSDN定义:更改点 (.) 的含义,使它与每一个字符匹配(而不是与除 \n 之外的每个字符匹配). 使用单行模式的典型场景是获取网页源码中的信息. 示例: 我们使用WebBrowser控件,从http://www.xxx.com/1.htm上获取了如下HTM

  • C#抓取网页数据 解析标题描述图片等信息 去除HTML标签

    一.首先将网页内容整个抓取下来,数据放在byte[]中(网络上传输时形式是byte),进一步转化为String,以便于对其操作,实例如下: 复制代码 代码如下: private static string GetPageData(string url) {     if (url == null || url.Trim() == "")         return null;     WebClient wc = new WebClient();     wc.Credentials

  • C#利用正则判断输入是否为纯数字、容器类

    容器类.正则表达式在几乎所有编程语言都存在的东西.很常用也很使用.下面用如下的一个控制台小程序说明C#的正则表达式与容器类的应用. 开始直接输出在C#定义好的数据字典Dictionary,这就是Java与Python的HashMap,之后定义一个存int的List,让用户无限输入这个List的元素,输入到#则停止输入,在输入的过程中遇到不是纯输入,则拒绝这个输入.  遍历这个List输出,之后利用C#的另一个容器HashSet为这个List去重. 这个程序的代码如下,其实以上所有的东西都在以前的

  • asp.net(C#) 动态添加非ASP的标准html控件(如添加Script标签)

    复制代码 代码如下: HtmlGenericControl Include2 = new HtmlGenericControl("script"); Include2.Attributes.Add("type", "text/javascript"); Include2.InnerHtml = "alert('JavaScript in Page Header');"; this.Page.Header.Controls.Ad

随机推荐