Java 中文数字转换为阿拉伯数字
贴出代码,方便学习交流,稍后放出镜像问题的代码
package com.thunisoft.cail.utils;
import com.sun.istack.internal.NotNull;
import java.security.InvalidParameterException;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @Author dengchengchao
* @Time 2018/5/22
* @Description 处理数字的工具类
*/
public class DigitUtils {
//读音与汉字对应的表
private static final Map<Character, Integer> Arab2Chinese = new HashMap<Character, Integer>() {
{
put('零', 0);
put('一', 1);
put('二', 2);
put('三', 3);
put('四', 4);
put('五', 5);
put('六', 6);
put('七', 7);
put('八', 8);
put('九', 9);
put('十', 10);
}
};
/**
* 单位对应数量级的表
*/
private static final Map<Character, Integer> UnitMap = new HashMap<Character, Integer>() {
{
put('十', 10);
put('百', 100);
put('千', 1000);
put('万', 10000);
put('亿', 10000 * 10000);
}
};
//正则提取
private static Pattern pattern = Pattern.compile("[零一二三四五六七八九十]?[十百千万亿]?");
/**
* 处理思路:
* <p>
* 可能的类型:
* 一千三百万 130000000
* 十一 11
* 一万 10000
* 一百二十五 125
* <p>
* 通过正则将字符串处理为 数字+单位的情况
* 然后处理的时候通过数字*单位+数字*单位...得到最后结果
*
* @param chinese 汉字输入,比如一千三百二十八
* @return 阿拉伯输入,比如 1328
*/
@NotNull
public static Integer Chinese2Arab(String chinese) {
Objects.requireNonNull(chinese);
//判断参数合法性
if (!pattern.matcher(chinese).replaceAll("").trim().equals("")) {
throw new InvalidParameterException();
}
Integer result = 0;
Matcher matcher = pattern.matcher(chinese);
//正则提取所有数字
while (matcher.find()) {
String res = matcher.group(0);
if (res.length() == 2) {
result += Arab2Chinese.get(res.charAt(0)) * UnitMap.get(res.charAt(1));
} else if (res.length() == 1) {
//处理三十、一百万的情况
if (UnitMap.containsKey(res.charAt(0))) {
result *= UnitMap.get(res.charAt(0));
} else if (Arab2Chinese.containsKey(res.charAt(0))) {
result += Arab2Chinese.get(res.charAt(0));
}
}
}
return result;
}
}
没怎么测试,有问题可以留言
Java 中文数字转换为阿拉伯数字的更多相关文章
- C# 阿拉伯数字转换为中文数字/中文数字转换为阿拉伯数字
项目中经常会格式化数据,转换数字的使用情况比较多,记录一下数字转换的方法! 如果需要转换为繁体中文,将数组里的汉字换成繁体中文即可. 1.阿拉伯数字转换为中文数字 /// <summary> ...
- Java实现中文数字转换为阿拉伯数字
/** * 中文數字转阿拉伯数组[十万九千零六十 --> 109060] * @author 雪见烟寒 * @param chineseNumber * @return */ @Suppress ...
- Python 中文数字转阿拉伯数字
#只能转数字,传参中包含非数字会错. def t(str): zhong={'零':0,'一':1,'二':2,'三':3,'四':4,'五':5,'六':6,'七':7,'八':8,'九':9}; ...
- javascript 中文数字阿拉伯数字转换类 Nzh
之前工作中碰到了数字转中文的情景,网上找的现成方法或多或少不合我的口味,最后还是自已写了一个. 现在整理了一下,补充了繁体,自定义字符,以及反函数(中文数字转阿拉伯数字) 现在发布出来,希望能合大家的 ...
- 使用Java将阿拉伯数字转换为中文数字(适配小数转换)
Java数字转换工具类 简介 该工具类可以将整数.小数.负数转换为中文的数字,如: 0 --> 零 1 --> 一 2.1 --> 二点一 -2.1 --> 负二点一 具体代码 ...
- PHP金额工具类之将阿利伯数字转换为大写中文数字
1.将阿拉伯数字转换为中文大写数字 <?php namespace core\components; class PriceHelper extends \yii\base\Component{ ...
- Javascript中将数字转换为中文的方法
//js实现将数字1234转化为汉字字符串(一千二百三十四)(或大写汉字壹仟贰佰叁拾肆): /*阿拉伯数字转中文数字 中文数字的特点: 每个计数数字都跟着一个权位,权位有:十.百.千.万.亿. 以“万 ...
- JAVA处理数字与中文数字互转(最大处理数字不超过万兆即:9999999999999999.9999)
package practice; import java.util.Arrays; /** * 数字与中文数字互转(最大处理数字不超过万兆即:9999999999999999.9999) * @au ...
- Thinkphp将中文年份转换为数字年份的问题
今天遇到一个问题:想将中文年份转换为数字年份,例如:"二零一六"-->'2016'. 在网上搜了一下,没找到可以直接处理的函数(也许是我搜索信息的能力有限吧>_< ...
随机推荐
- 纯 CSS 实现幻灯片播放
介绍: 今日看到一道面试题,关于 使用纯CSS,不利用js, 写一个简单的幻灯效果页面.于是做了一个小demo,建议使用chrome,IE11查看~~ 主要思想: 利用 CSS3的 伪类选择器 : ...
- [PHP] php, apache, VS Code安装与配置
1. 下载
- Spark 学习笔记之 Streaming Window
Streaming Window: 上图意思:每隔2秒统计前3秒的数据 slideDuration: 2 windowDuration: 3 例子: import org.apache.kafka.c ...
- pycharm导入自己写的包的时候,不能识别模块的解决办法
今天用写selenium脚本的时候导入自己统计目录下的模块时,出错,明明存在但是报错说模块不存在,找了半天终于找到解决方案,顺便记录一下吧 pycharm不会将当前文件目录自动加入自己的sourse_ ...
- 浅析MVC Pattern
一.前言 最近做CAD插件相关的工作,用到了一些模式,解决对应场景的问题. 比如插件的运行实例上使用Singleton.实例内部使用了MVC(Strategy and Observer ). 针对CA ...
- Mariadb 基于Mycat实现读写分离
环境:Mariadb主:192.168.200.129 Mariadb从:192.168.200.114 Mycat :192.168.200.112 (1) 安装jdk,先查看本机是 ...
- Unity动态改变物体遮挡关系
在动态创建物体时,通常同父级下先创建的子物体会被后创建的遮挡,此时就需要我们用代码改变对象的层级. GameObject go;go.transform.SetAsLastSibling();//设置 ...
- 重磅发布 | 全球首个云原生应用标准定义与架构模型 OAM 正式开源
作者: OAM 项目负责人 导读:2019 年 10 月 17 日,阿里巴巴合伙人.阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在 Qcon 上海重磅宣布,阿里云与微软联合推出开放应用模型 Op ...
- python urllib2实现http GET PUT DELETE POST的方法
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/3/11 下午8:33 # @Author : liubing # @File ...
- 开发 Django 博客文章阅读量统计功能
作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 如何精确地记录一篇文章的阅读量是一个比较复杂的问题,不过对于我们的博客来说,没有必要 ...