英文整数数字转成阿拉伯数字,正负 百万亿以内

测试结果:

"negative four hundred nineteen trillion two hundred thirty four billion five hundred sixty seven million eight hundred ninety zero thousand one hundred"
转换后为
-419234567890100

源码:

import java.util.HashMap;public class EnNum2Num {private static HashMap<String,Long> map = new HashMap();static {map.put("negative", -1L);map.put("zero", 0L);map.put("one", 1L);map.put("two", 2L);map.put("three", 3L);map.put("four", 4L);map.put("five", 5L);map.put("six", 6L);map.put("seven", 7L);map.put("eight", 8L);map.put("nine", 9L);map.put("ten", 10L);map.put("eleven", 11L);map.put("twelve", 12L);map.put("thirteen", 13L);map.put("fourteen", 14L);map.put("fifteen", 15L);map.put("sixteen", 16L);map.put("seventeen", 17L);map.put("eighteen", 18L);map.put("nineteen", 19L);map.put("twenty", 20L);map.put("thirty", 30L);map.put("forty", 40L);map.put("fifty", 50L);map.put("sixty", 60L);map.put("seventy", 70L);map.put("eighty", 80L);map.put("ninety", 90L);map.put("hundred", 100L);map.put("thousand", 1000L);map.put("million", 1000000L);map.put("billion", 1000000000L);map.put("trillion",1000000000000L);}private static long underHundred(String s){if(s == null){return 0;}s = s.trim();if(s.equals("")){return 0;}long sum = 0;String[] arr = s.split(" ");for (String a : arr) {if(a.equals("")){continue;}sum += map.get(a);}return sum;}private static long underThousand(String s) throws Exception {if(s == null){return 0;}s = s.trim();if(s.equals("")){return 0;}long sum = 0;if(s.contains("hundred")) {String[] arr = s.split("hundred");if (arr.length == 2) {sum += underHundred(arr[0]) * map.get("hundred");s = arr[1];} else if (arr.length == 3) {throw new Exception("2 hundred");} else if (arr.length == 1) {sum += underHundred(arr[0]) * map.get("hundred");return sum;}}sum += underHundred(s);
//        System.out.println("sum="+sum);return sum;}private static long underMillion(String s) throws Exception {if(s == null){return 0;}s = s.trim();if(s.equals("")){return 0;}long sum = 0;if(s.contains("thousand")) {String[] arr = s.split("thousand");if (arr.length == 2) {sum += underThousand(arr[0]) * map.get("thousand");s = arr[1];} else if (arr.length == 3) {throw new Exception("2 thousand");} else if (arr.length == 1) {sum += underThousand(arr[0]) * map.get("thousand");return sum;}}sum += underThousand(s);
//        System.out.println("sum="+sum);return sum;}private static long underBillion(String s) throws Exception {if(s == null){return 0;}s = s.trim();if(s.equals("")){return 0;}long sum = 0;if(s.contains("million")){String[] arr = s.split("million");if(arr.length == 2){sum += underThousand(arr[0])*map.get("million");s = arr[1];}else if(arr.length == 3){throw new Exception("2 million");}else if(arr.length == 1){sum += underThousand(arr[0])*map.get("million");return sum;}}sum += underMillion(s);
//        System.out.println("sum="+sum);return sum;}private static long underTrillion(String s) throws Exception {if(s == null){return 0;}s = s.trim();if(s.equals("")){return 0;}long sum = 0;if(s.contains("billion")) {String[] arr = s.split("billion");if (arr.length == 2) {sum += underThousand(arr[0]) * map.get("billion");s = arr[1];} else if (arr.length == 3) {throw new Exception("2 billion");} else if (arr.length == 1) {sum += underThousand(arr[0]) * map.get("billion");return sum;}}sum += underBillion(s);
//        System.out.println("sum="+sum);return sum;}//enNum 必须是一个英文数字 ,不能掺杂无关单词//注意:没有处理在中间的符号 '-' ,有些数字有写法如 fifty-fourpublic static long enNum2Num(String s) throws Exception {if(s == null || s.trim().equals("")){return 0;}s = s.replaceAll(" and "," ");s = s.replaceAll("  ","");long flag = 1;if(s.contains("negative")){flag = -1;s = s.replace("negative","").trim();}long sum = 0;if(s.contains("trillion")) {String[] arr = s.split("trillion");if (arr.length == 2) {sum += underThousand(arr[0]) * map.get("trillion");s = arr[1];} else if (arr.length == 3) {throw new Exception("2 trillion");} else if (arr.length == 1) {sum += underThousand(arr[0]) * map.get("trillion");return sum;}}sum += underTrillion(s);return sum*flag;}public static void main(String[] args) throws Exception {String s = "negative four hundred nineteen trillion two hundred thirty four billion five hundred sixty seven million eight hundred ninety zero thousand one hundred";long l = enNum2Num(s);System.out.println(l);}
}

java 英文整数数字转成阿拉伯数字 正负百万亿以内相关推荐

  1. 把英文转换成数字python_python实现将英文单词表示的数字转换成阿拉伯数字的方法...

    本文实例讲述了python实现将英文单词表示的数字转换成阿拉伯数字的方法.分享给大家供大家参考.具体实现方法如下: import re _known = { 'zero': 0, 'one': 1, ...

  2. 中文数字转换成阿拉伯数字(一千二百三十四万五千六百七十八-->12345678)

    昨天老大问我又没有写过中文数字转换成阿拉伯数字,我说没有,我说那应该简单啊,就是将中文对应的数字换成阿拉伯数字就好了啊,比如一就换成1,二就换成2-十换成10.可是那么问题来了- 一十二呢-不能是11 ...

  3. python将中文数字转化成阿拉伯数字

    python将中文数字转化成阿拉伯数字 正则表达式提取文本中的数字 中文转化成阿拉伯数字 完整代码 正则表达式提取文本中的数字 这里演示一下文本中提取中文年份 import re m0 = " ...

  4. 如何把excel里面中文小写数字转换成阿拉伯数字

    今天跟大家分享一下如何把excel里面中文小写数字转换成阿拉伯数字 1.打开要处理的Excel文件 2.将E列数据复制一份到F列中并选中 3.点击下图选项(Excel工具箱,百度即可了解详细下载安装信 ...

  5. python将英文单词表示的数字转换成阿拉伯数字的代码

    下边内容内容是关于python将英文单词表示的数字转换成阿拉伯数字的内容. import re _known = { 'zero': 0, 'one': 1, 'two': 2, 'three': 3 ...

  6. python123数字转换_Python将汉字数字转换成阿拉伯数字的方法

    用Python将汉字数字转换成阿拉伯数字的方法.汉字数字就是我们的大写数字:零.壹.贰.叁.肆.伍.陆.柒.捌.玖.拾,这种只有在会计人员才会常用的数字. Python把用汉字表示的数字转换为阿拉伯数 ...

  7. Python将汉字数字转换成阿拉伯数字的方法

    Python将汉字数字转换成阿拉伯数字的方法 - 玩蛇网 http://www.iplaypy.com/code/base/b2600.html 用Python语言来为不同数字之间做转换之前就有介绍过 ...

  8. java将大写数字转换成小写并输出

    import java.util.Scanner; public class Low { //lowNumber方法将大写数字转换成小写并输出 private static void lowNumbe ...

  9. JAVA浮点数转人民币读法_算法--java实现将数字转换成人民币大写(迅雷面试题)...

    public classRmb {/*** 人民币的基本信息和操作 * *@authorsoyoungboy *@version1.0*/ private double number; //人民币的数 ...

  10. Java实现将数字转换成中文大写

    /** *程序功能:支持将仟亿数字转换成中文数字表示,如(110.12 转换成壹佰壹拾元壹角贰分) *算法思路:将数字,分成整数部分和小数部分(小数部分四舍五入到两位),分别进行转换,然后将转换后的结 ...

最新文章

  1. 嵌入式研究杂记(1)-RISC-V开源CPU
  2. PolyData之DataBounds
  3. 【转】hadoop 报 Name node is in safe mode 错
  4. 从0到1 | 0基础/转行如何用3个月搞定机器学习
  5. 沃尔沃XC40纯电版官宣降价至29.9万元起
  6. 普通人怎么样才能存到钱?
  7. 阿里云负载均衡SSL证书配置(更新)
  8. ARM926EJ-S/ARM920T 协处理器 CP14, CP15详解
  9. MDK5软件入门之——基础工程创建及下载和调试
  10. 身份证号码规律,亲测可用
  11. 幸运数字c语言编程软件,幸运数 (C++代码)
  12. 【无标题】口算小程序
  13. 零基础学习MSP430F552LP开发板,学习前期准备,Code Composer Studio(CCS)软件的安装
  14. 音视频学习之ffmpeg时间戳相关整理(时间基tbr,tbn,tbc)
  15. php的位运算,php的位运算详解
  16. css3实现向一个方向无缝连接滚动
  17. BZOJ 4808(马-二分图最大独立集)
  18. TIFF图像文件详解
  19. Hive load data 时中文乱码的解决
  20. Springboot+MybatisPlus+layui简易账单管理项目

热门文章

  1. dmp(dump)转储文件
  2. 《Excel大神上分攻略》学习笔记1——填充、行列操作、数据格式
  3. 相机技术--摄像机720p、1080p、2mp、3mp、5mp;VGA, QHD, FHD, 2K,4K对应的分辨率分别是什么
  4. QDockWidget标题栏
  5. mutiget FlashGot
  6. Mysql从入门到入魔——6. 表联结、组合查询
  7. 电脑桌面只显示计算机不显示文件夹,如何解决电脑桌面不显示拷贝文件的问题?...
  8. 2021-06-30
  9. IETester——用来测试IE5.5~IE11兼容性的工具
  10. 企业邮箱邮件的服务器地址是什么?企业邮箱服务器出错怎么办?