java 数字转汉字思路,数字转中文的方法
public static final String EMPTY = "";
public static final String ZERO = "零";
public static final String ONE = "壹";
public static final String TWO = "贰";
public static final String THREE = "叁";
public static final String FOUR = "肆";
public static final String FIVE = "伍";
public static final String SIX = "陆";
public static final String SEVEN = "柒";
public static final String EIGHT = "捌";
public static final String NINE = "玖";
public static final String TEN = "拾";
public static final String HUNDRED = "佰";
public static final String THOUSAND = "仟";
public static final String TEN_THOUSAND = "万";
public static final String HUNDRED_MILLION = "亿";
public static final String YUAN = "元";
public static final String JIAO = "角";
public static final String FEN = "分";
public static final String DOT = ".";
private static MoneyFormatTest formattest = null;//定义一个静态的MoneyFormatTest类让它空
//建了两个HashMap数的散列表。
private HashMap chineseNumberMap = new HashMap();
private HashMap chineseMoneyPattern = new HashMap();
/*NumberFormat 是所有数值格式的抽象基类。 该类提供了格式化和分析数值的接口。 NumberFormat 也提供了确定哪个语言环境具有数值格式以及它们名字的方法。
NumberFormat 帮助格式化和分析任何语言环境的数值。 代码可以完全不依赖于语言环境中关于十进制小数点、千进位分隔符的约定,甚至关于使用特别的十进制数字或数值格式是否为小数的约定。
*/
private NumberFormat numberFormat = NumberFormat.getInstance();//为了格式化当前 Locale 的数值,使用下列静态工厂方法之一。
//构造方法
private MoneyFormatTest() {
numberFormat.setMaximumFractionDigits(4);
numberFormat.setMinimumFractionDigits(2);
numberFormat.setGroupingUsed(false);
//在该散列表中映射指定的 键 到指定的 值 。
chineseNumberMap.put("0", ZERO);
chineseNumberMap.put("1", ONE);
chineseNumberMap.put("2", TWO);
chineseNumberMap.put("3", THREE);
chineseNumberMap.put("4", FOUR);
chineseNumberMap.put("5", FIVE);
chineseNumberMap.put("6", SIX);
chineseNumberMap.put("7", SEVEN);
chineseNumberMap.put("8", EIGHT);
chineseNumberMap.put("9", NINE);
chineseNumberMap.put(DOT, DOT);
chineseMoneyPattern.put("1", TEN);
chineseMoneyPattern.put("2", HUNDRED);
chineseMoneyPattern.put("3", THOUSAND);
chineseMoneyPattern.put("4", TEN_THOUSAND);
chineseMoneyPattern.put("5", TEN);
chineseMoneyPattern.put("6", HUNDRED);
chineseMoneyPattern.put("7", THOUSAND);
chineseMoneyPattern.put("8", HUNDRED_MILLION);
}
//如果是formatter等于空,也就是如果是第一次载入的就实例化SimpleMoneyFormat类,返回SimpleMoneyFormat的一个对象。
public static MoneyFormatTest getInstance() {
if (formattest == null)
formattest= new MoneyFormatTest();
return formattest;
}
//重载format方法格式的规范传入不同类型的参数,返回String类型
public String format(String moneyStr) {
checkPrecision(moneyStr);
String result;
result = convertToChineseNumber(moneyStr);
result = addUnitsToChineseMoneyString(result);
return result;
}
public String format(double moneyDouble) {
return format(numberFormat.format(moneyDouble));
}
public String format(int moneyInt) {
return format(numberFormat.format(moneyInt));
}
public String format(long moneyLong) {
return format(numberFormat.format(moneyLong));
}
public String format(Number moneyNum) {
return format(numberFormat.format(moneyNum));
}
private String convertToChineseNumber(String moneyStr) {
String result;
StringBuffer cMoneyStringBuffer = new StringBuffer();//定义字符串缓冲区实现可变字符序列
for (int i = 0; i < moneyStr.length(); i++) {
cMoneyStringBuffer.append(chineseNumberMap.get(moneyStr.substring(i, i + 1)));//添加字符串到字符串缓冲区。
}
//拾佰仟万亿等都是汉字里面才有的单位,加上它们
int indexOfDot = cMoneyStringBuffer.indexOf(DOT);
int moneyPatternCursor = 1;
for (int i = indexOfDot - 1; i > 0; i--) {
cMoneyStringBuffer.insert(i, chineseMoneyPattern.get(EMPTY + moneyPatternCursor));
moneyPatternCursor = moneyPatternCursor == 8 ? 1 : moneyPatternCursor + 1;
}
引 :[@more@]
java 数字转汉字思路,数字转中文的方法相关推荐
- php数字转汉字,php数字转汉字算法代码
以前学习了汉字转拼音的方法,今天再来探讨下数字转为汉字的方法. 例子: 复制代码 代码示例: //将数字转换为汉字,比如1210转换为一千二百一十 $num = "842105580&quo ...
- java正则匹配汉字_正则表达式匹配中文汉字
文章告诉你如何利用php教程 正则表达式匹配中文汉字哦,下面我们主要讲利用preg_match mb_eregi来验证汉字,并且正则过程出现问题的解决方法. preg_match("/[a- ...
- Java数字转汉字,数字转大写
网上找了一圈,都不合我意,自己花点时间写了一下. 数字不好,逻辑差了点,性能应该还可以. 如果需要修改为转财务大写或转换为语音文件的,可以简单把汉字改一个就行. package com.lixor; ...
- .net 数字转汉字_TensorFlow 2.0 中文手写字识别(汉字OCR)
TensorFlow 2.0 中文手写字识别(汉字OCR) 在开始之前,必须要说明的是,本教程完全基于TensorFlow2.0 接口编写,请误与其他古老的教程混为一谈,本教程除了手把手教大家完成这个 ...
- 验证码的三种做法[纯数字][纯汉字][字母\数字\汉字混合]C#
效果如图(我确实懒了点,按纽的名字都没有改,哈哈) 需要说明的是,因为提交对比后,页面是重新刷新了,所以文本框里面看见的和后面图片显示不一样,这个不需要太多说明吧!! 混合模式刷新出现约界错误 已经被 ...
- Java/Android中汉字转拼音的两种方法,优劣比较
一.前言 在我们的开发中,有时会有这样的需求,就是联系人列表按照拼音顺序排列(如通讯录).于是,我也在网上搜到了许多这类的文章,就两种最常见的做法在此进行简单的比较和分析 二.汉字转拼音的方法 使用第 ...
- php数字转换汉字,如何在php中将数字转换成汉字
将php数字转换为汉字的实现方法:首先,创建一个PHP代码样本文件:然后定义一个"数字2中国"的方法:然后,通过方法体中的开关循环语句实现转换逻辑:最后,执行文件. 推荐:PHP教 ...
- python 输出汉字大写数字的章节数
目的:输出汉字大写数字的章节数,为PDF文档作书签. idict={} numList=[str(i) for i in range(0,10)]#需要用字符串的形式,这样才能把各个位数上的数字转化为 ...
- 【简单易懂】Java字符串应用场景:数字金额转换成大写汉字金额【金额转换】
Java字符串应用场景:数字金额转换成汉字金额 文章目录 Java字符串应用场景:数字金额转换成汉字金额 前言 一.String简单介绍 二.字符串在开发中的应用场景 三.金额转换 3.1解题思路 3 ...
最新文章
- 嵌入式学习笔记--网络打流补充笔记(iperf3应用)
- 如何撰写好一篇论文?密歇根Andrew教授这篇《撰写高影响力论文指南》为你细致讲解论文写作,附视频与pdf...
- python的range()和list操作
- Rabbitmq基本框架和安装(1)
- 消息队列的四大典型使用场景
- 用Redux来进行组件间通讯
- 如何一秒钟从头构建一个 ASP.NET Core 中间件
- 如何获取 OSS AccessKeyId、AccessKeySecret
- 12_04_Linux软件管理之四yum
- linux下 安装tengine
- 计算机网络基础(二)
- rtmp http mp4 网页播放器
- 积分形式的詹森不等式_均值不等式及其积分形式
- H265 Vs VP9
- html背景图片纵向拉伸,html网页背景图片拉伸 关于html背景图片往下拉伸问题
- Java开发就业前景,2017java开发就业前景分析
- IntelliJ Keymap
- 1.金融点滴 - 什么是做多、做空?国内股市为什么不能做空?
- 咪咕版kindle利用“隐藏浏览器”打开微信读书
- 22考研经验贴-这是可以说的吗?