本文转载自http://blog.csdn.net/yeah86/article/details/3456706

之前在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. }

阿拉伯数字转换成大写数字相关推荐

  1. win7计算机名改成大写,处置win7系统将word中的阿拉伯数字转换成大写数字的还原方案...

    随着电脑的使用率越来越高,我们有时候可能会遇到对win7系统将word中的阿拉伯数字转换成大写数字进行设置,如果我们需要对win7系统将word中的阿拉伯数字转换成大写数字进行设置时,要怎么处理win ...

  2. C语言自学路之将小写数字完美转换成大写数字

    C语言自学路之将小写数字完美转换成大写数字 # define N 6:6位及以内的整数(小数点后不计) PS:中间两条测试数组正确性的可以忽视,我只是每敲一点都喜欢运行测试一下- #include & ...

  3. python练习题--阿拉伯数字转换成中文数字

    python练习题–阿拉伯数字转换成中文数字 用户输入任意阿拉伯数字,如[123456],把它转换成中文数字[壹拾贰万叁仟肆佰伍拾陆] 以前面试时面试官问的问题,当时没能答出来,今天初步解决,把它记录 ...

  4. 将(123)数字转换成大写数字(壹,贰,弎)

    此方法 将(123)数字转换成大写数字(壹,贰,弎) RMBUtils.toChineseUnit()

  5. 银行考题,将阿拉伯数字转换成大写的汉字模式

    银行考题,将阿拉伯数字转换成大写的汉字模式 例如 123456789.01  -> 壹亿贰千叁百肆十伍万陆千柒百捌十玖元零壹分 假定:  最小到"分"  最大到 " ...

  6. 《读九章算术学Python》如何用Python编程实现阿拉伯数字转换成汉字数字?

    第6章 数量转换 Python编程基础 字典 字符串操作 if-elif-else语句 递归 前面的输入和输出都是阿拉伯数字,这一章我们来看一下如何实现阿拉伯数字和汉字数字之间的相互转换. 6.1 阿 ...

  7. 小写数字转换成大写数字

    前两天看到一道题,关于小写数字转换成大写的.也就是将"1023050405"这样的数字转换为"十亿二千三百零五万零四百零五". 这个是个算法问题,其它语言也是相 ...

  8. 阿拉伯数字转换成大写的数字

    import java.math.BigInteger;/** * @author 作者 E-mail: * @version 创建时间:2016年9月18日 下午5:26:04 * 类说明 */ p ...

  9. 将阿拉伯数字转换成汉字数字(小写)

    将之前找到的代码加以完善和修改,可以支持亿级别的数字转换,有更好的可以给些建议,谢谢 public static String ToCH(int intInput) {String si = Stri ...

最新文章

  1. java 库存 进销存 商户 多用户管理系统 SSM springmvc 项目源码
  2. 未来农业科技:物联网如何阻止全球粮荒
  3. web安全101之如何理解XXE?
  4. Swift 学习手记1,pod 的 类库使用
  5. 简述原型模型的特点_3D打印硅胶复模手板的步骤和特点有哪些
  6. QAQ的幸运数字 数学
  7. 老男孩python课后作业_老男孩python基础知识练习题(一)中
  8. 滑盖、双屏手机降价至冰点,为何仍无人问津?
  9. sql计数_SQL计数区分功能概述
  10. 51Nod 1256 乘法逆元 Label:exgcd
  11. LoadRunner启动自带例子Web Tours报错
  12. POJ 334932742151184020022503
  13. Refactoring Page Head
  14. SIP Servlet开发环境配置
  15. 系统集成项目管理工程师思维导图
  16. 测试耳机的噪音测试软件,测试你的耳机音效,听这十首歌就够了
  17. Linux SVN忽略文件夹更新的命令与方法
  18. charles介绍及代理设置
  19. excel数据分析 - 10个清洗文本类函数
  20. 1-7-2 查询水果价格分数

热门文章

  1. GPT背后原理详解:从T5到GPT-4,国内20余位顶级大牛联合撰写
  2. 苹果3G iPhone将于第二季度亮相
  3. Bug Report该怎么做?
  4. ReLU激活函数:简单之美
  5. 种草!.NET开发控件集ComponentOne Studio Enterprise!
  6. 最简单的油猴(tampermonkey)脚本安装及使用教程-2023
  7. 江南爱软装十大品牌 软装包括什么
  8. 8259A的工作方式
  9. SQL Server研习录(23)——RAISERROR()函数
  10. css中使用自定义字体 和 自定义字体图标