之前在CSDN论坛里,看有人Show了一些把中文大写转换成阿拉伯数字的程序代码,自己也用Java语言实现了程序设计,基本上能够实现十万亿以内的任何数字的转换。之前也帖出自己的实现代码。

但我个人认为,把大写转换为数字实际上是没有多少意义的。因为很少有把大写转为数字的,大多数都是把数字转换为大写。何况把大写转为数字并不是一件很容易的事情,因为汉语大写有很多种说法,比如说:101,它的汉语说法可以有好多种:

(一)、百零一

(二)、一百零一

(三)、一百又一

(四)、幺零幺

因此,要实现起来其实是很难的。而且还要防止用户输入大小写不固定,一会输入“一百零一”,一会又输入“壹佰零壹”,或者是二者的杂合体。形式千变万化,何况这一个数字就可以有这么多种,还有那么多特殊的数字呢?除非用成统一标准的输入。否则是很容易出现问题的。

但是,数字转换成大写却是很实用的,平时去银行用得比较多,只要涉及金钱的时候,基本上都要求用大写。所以,这种转换看来是符合要求,因此,我用C#代码实现了其功能,并将用户输入用“,”分隔成三个一组的形式,可以实现百万亿级别的数字转换。下面我帖出部分代码,大家指正:

其他输入验证我就不帖出来了,只把核心代码帖出来

  1. class Chinese
  2. {
  3. public string returnResult(long num)
  4. {
  5. string numStr = num.ToString();
  6. //主要理念是把数字字符串最终分隔为四个一组四个一组的,不足的不管。
  7. if (numStr.Length > 8 & numStr.Length < 16)
  8. {
  9. //定义一个数组,存储整个字条串分隔后的字符串。然后两次递归调用。
  10. //调用完全后,得到总的大写字符串。
  11. string[] firstSplit = new string[2];
  12. firstSplit[0] = numStr.Substring(0, numStr.Length - 8);
  13. firstSplit[1] = numStr.Substring(numStr.Length - 8, 8);
  14. string result1 = getString(firstSplit[0]) + "億";
  15. string result2 = getString(firstSplit[1]);
  16. return result1 + result2;
  17. }
  18. else
  19. {
  20. return getString(numStr);
  21. }
  22. }
  23. //进行一次递归调用,得到两组四位数字的大字字串
  24. public string getString(string str)
  25. {
  26. if (str.Length > 4)
  27. {
  28. string[] secondSplit = new string[2];
  29. secondSplit[0] = str.Substring(0, str.Length - 4);
  30. secondSplit[1] = str.Substring(str.Length - 4, 4);
  31. string result1 = getRe(secondSplit[0]);
  32. string result2 = getRe(secondSplit[1]);
  33. //确定是否加“万”字
  34. if (!secondSplit[0].Equals("0000"))
  35. {
  36. result1 += "萬";
  37. }
  38. return result1 + result2;
  39. }
  40. else
  41. {
  42. return getRe(str);
  43. }
  44. }
  45. int[] value = { 1000, 100, 10 };
  46. //将四位数以内的字符串返回为正确的大写称呼 比如1234 返回:一千二百三十四
  47. public string getRe(string doWith)
  48. {
  49. char[] number = doWith.ToCharArray();
  50. int length = number.Length;
  51. string re = "";
  52. for (int i = 0; i < length; i++)
  53. {
  54. switch (number[i])
  55. {
  56. case '0':
  57. if (re.EndsWith("零"))
  58. {
  59. re += "";
  60. }
  61. else
  62. {
  63. re += "零";
  64. }
  65. break;
  66. case '1':
  67. re += "壹";
  68. break;
  69. case '2':
  70. re += "贰";
  71. break;
  72. case '3':
  73. re += "叁";
  74. break;
  75. case '4':
  76. re += "肆";
  77. break;
  78. case '5':
  79. re += "伍";
  80. break;
  81. case '6':
  82. re += "陆";
  83. break;
  84. case '7':
  85. re += "柒";
  86. break;
  87. case '8':
  88. re += "捌";
  89. break;
  90. case '9':
  91. re += "玖";
  92. break;
  93. }
  94. int index = (int)Math.Pow(10, length - i - 1);
  95. if (number[i].ToString() == "0")
  96. {
  97. index = -1;
  98. }
  99. switch (index)
  100. {
  101. case 1000:
  102. re += "仟";
  103. break;
  104. case 100:
  105. re += "佰";
  106. break;
  107. case 10:
  108. re += "拾";
  109. break;
  110. }
  111. }
  112. if (re.EndsWith("零"))
  113. {
  114. re = re.Substring(0, re.Length - 1);
  115. }
  116. return re;
  117. }
  118. }

CSDN下载地址:http://d.download.csdn.net/down/842756/yeah86

如何把阿拉伯数字转换为中文大写?相关推荐

  1. VB 阿拉伯数字转换为中文大写数值函数

    Private Function CChinese(StrEng As String) As String If Not IsNumeric(StrEng) Or StrEng Like " ...

  2. 将阿拉伯数字转换为中文大写数字 —— pyhton实现

    将阿拉伯数字转换为中文大写数字 -- pyhton实现 在银行的日常业务中,常常需要用到将阿拉伯数字转换为中文大写数字的 功能.这次实验将编写一个程序,将用户输入的阿拉伯数字代表的金额,转换为大写数字 ...

  3. Python:阿拉伯数字转换为中文大写数字(金额的读数规则)

    萌萌帮班里同学做了一个python的编程作业,正好回顾一下python基础知识,以下源码和思考过程,代码全部原创. IDE:pycharm python版本:python3.7 ''' 实验目的:在银 ...

  4. 金额阿拉伯数字转换为中文大写

    最近的做项目中需要弄一个金额是阿拉伯数字转为中文大写的金额,自己偷懒了,就总结一下. 第一种方法相对复杂 private static readonly String cnNumber = " ...

  5. Python 阿拉伯数字转换为中文大写数字

    题目 python练习的一个小实验,  题目如下图: 附阿拉伯数字对应的中文大写: 思路 1. 通过定义一个字典进行阿拉伯数字与大写中文的对比储存 2. 将用户的输入首先分割为整数与小数部分分别进行处 ...

  6. 阿拉伯数字转换为中文大写数字

    这个功能使用场景不多,百度也能找到很多相关代码,只不过我找了几个看的不是很明白,为了锻炼自己的思维能力,所以就干脆自己写了一个,不仅分享代码,同时也分享一下我的思路 JS代码 let moneyCas ...

  7. 正则也很牛,把阿拉伯数字的金额转换为中文大写数字

    using System; using System.Text.RegularExpressions; class Program {   // 把阿拉伯数字的金额转换为中文大写数字   static ...

  8. Lua阿拉伯数字转中文大写数字

    function numberToString(szNum)---阿拉伯数字转中文大写local szChMoney = ""local iLen = 0local iNum = ...

  9. 阿拉伯数字和中文大写形式的相互转换

    将阿拉伯数字转化为中文大写是很简单很实用的功能,但由于0这个特殊数字的存在使得实现起来并非那么容易,实现这一功能的关键就是对0的正确处理.该程序是我几个月之前写成的,当时没有加注释,现在程序的实现细节 ...

最新文章

  1. 一文详尽系列之EM算法
  2. 两个网站做到同一个服务器,两个网站放在同一个服务器 备案
  3. Android 使用RxJava--基础篇
  4. 业务需求、客户需求与功能需求
  5. k8s容器探针:就绪检测、存活检测
  6. Sun Cluster3.3+Oracle11g配置数据库资源问题
  7. SQL Server安装文件挂起错误解决办法
  8. 直击中关村创业大街,新街头霸王来了
  9. 2021年中国电影营销数字化发展分析
  10. 【Siddhi】Siddhi 如何表示布尔 Syntax error in SiddhiQL, mismatched input ‘boolean
  11. 川大计算机专业导师冯子亮,问问川大计算机研究生招收的小专业有哪些
  12. python爬虫从入门到放弃-python 爬虫《从入门到放弃》
  13. u深度重装系统详细教程_如何重装系统 U深度U盘重装系统教程
  14. 服务器收到syn包不回消息,TCP:SYN请求接收SYN响应代替SYN-ACK
  15. 伽罗瓦理论笔记暂记2
  16. 用C++(附源码)制作一款功能强大,自动偷菜QQ农场辅助!
  17. 【ice】飞冰快速上手笔记
  18. IconWorkshop英文版(带激活工具)
  19. 【渝粤教育】国家开放大学2018年秋季 0088-21T保险学概论 参考试题
  20. Some projects cannot be imported because their project description file is corrupted

热门文章

  1. ASP.Net: EshineASPNet教程-支付机构支付模块
  2. 蓝鲸作业流程编排--参数使用
  3. python3爬虫抓取链家上海租房信息
  4. WT2003H4-16S 语音芯片按键录音及播放应用解析
  5. 基于WT588F02B语音芯片的智能语音感应洗手液器设计方案
  6. 芯片学生党必会的行业英文术语
  7. xbox会员中心在哪_白金会会员中心
  8. 微信小程序 image-cropper 还原按钮控制
  9. IntelliJ IDEA - 自定义 TODO
  10. 量化投资作业的R实现——收益率相关图形绘制