牛牛牛!正则阿拉伯数字变中国大写

本文介绍了一种将阿拉伯数字转换成中文大写的C#实现方法。通过使用正则表达式进行模式匹配与替换,该方法能准确地将任意合法的浮点数金额转换为对应的中文大写形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;
using System.Text.RegularExpressions;
 
class Program
{
  // 把阿拉伯数字的金额转换为中文大写数字
  static string ConvertToChinese(double x)
  {
    string s = x.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");
    string d = 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(d, "."delegate(Match m) { return "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟萬億兆京垓秭穰"[m.Value[0] - '-'].ToString(); });
  }
 
  static void Main()
  {
    Random r = new Random();
    for (int i = 0; i < 10; i++)
    {
      double x = r.Next() / 100.0;
      Console.WriteLine("{0,14:N2}: {1}", x, ConvertToChinese(x));
    }
  }
}
/* 可能的输出:
  5,607,400.68: 伍佰陆拾萬柒仟肆佰元陆角捌分
  2,017,723.33: 贰佰零壹萬柒仟柒佰贰拾叁元叁角叁分
    751,181.17: 柒拾伍萬壹仟壹佰捌拾壹元壹角柒分
  7,849,851.53: 柒佰捌拾肆萬玖仟捌佰伍拾壹元伍角叁分
  2,629,143.90: 贰佰陆拾贰萬玖仟壹佰肆拾叁元玖角
 13,461,629.68: 壹仟叁佰肆拾陆萬壹仟陆佰贰拾玖元陆角捌分
  4,594,391.16: 肆佰伍拾玖萬肆仟叁佰玖拾壹元壹角陆分
 13,046,560.60: 壹仟叁佰零肆萬陆仟伍佰陆拾元陆角
 13,041,371.21: 壹仟叁佰零肆萬壹仟叁佰柒拾壹元贰角壹分
 20,639,609.44: 贰仟零陆拾叁萬玖仟陆佰零玖元肆角肆分
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值