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 数字转汉字思路,数字转中文的方法相关推荐

  1. php数字转汉字,php数字转汉字算法代码

    以前学习了汉字转拼音的方法,今天再来探讨下数字转为汉字的方法. 例子: 复制代码 代码示例: //将数字转换为汉字,比如1210转换为一千二百一十 $num = "842105580&quo ...

  2. java正则匹配汉字_正则表达式匹配中文汉字

    文章告诉你如何利用php教程 正则表达式匹配中文汉字哦,下面我们主要讲利用preg_match mb_eregi来验证汉字,并且正则过程出现问题的解决方法. preg_match("/[a- ...

  3. Java数字转汉字,数字转大写

    网上找了一圈,都不合我意,自己花点时间写了一下. 数字不好,逻辑差了点,性能应该还可以. 如果需要修改为转财务大写或转换为语音文件的,可以简单把汉字改一个就行. package com.lixor; ...

  4. .net 数字转汉字_TensorFlow 2.0 中文手写字识别(汉字OCR)

    TensorFlow 2.0 中文手写字识别(汉字OCR) 在开始之前,必须要说明的是,本教程完全基于TensorFlow2.0 接口编写,请误与其他古老的教程混为一谈,本教程除了手把手教大家完成这个 ...

  5. 验证码的三种做法[纯数字][纯汉字][字母\数字\汉字混合]C#

    效果如图(我确实懒了点,按纽的名字都没有改,哈哈) 需要说明的是,因为提交对比后,页面是重新刷新了,所以文本框里面看见的和后面图片显示不一样,这个不需要太多说明吧!! 混合模式刷新出现约界错误 已经被 ...

  6. Java/Android中汉字转拼音的两种方法,优劣比较

    一.前言 在我们的开发中,有时会有这样的需求,就是联系人列表按照拼音顺序排列(如通讯录).于是,我也在网上搜到了许多这类的文章,就两种最常见的做法在此进行简单的比较和分析 二.汉字转拼音的方法 使用第 ...

  7. php数字转换汉字,如何在php中将数字转换成汉字

    将php数字转换为汉字的实现方法:首先,创建一个PHP代码样本文件:然后定义一个"数字2中国"的方法:然后,通过方法体中的开关循环语句实现转换逻辑:最后,执行文件. 推荐:PHP教 ...

  8. python 输出汉字大写数字的章节数

    目的:输出汉字大写数字的章节数,为PDF文档作书签. idict={} numList=[str(i) for i in range(0,10)]#需要用字符串的形式,这样才能把各个位数上的数字转化为 ...

  9. 【简单易懂】Java字符串应用场景:数字金额转换成大写汉字金额【金额转换】

    Java字符串应用场景:数字金额转换成汉字金额 文章目录 Java字符串应用场景:数字金额转换成汉字金额 前言 一.String简单介绍 二.字符串在开发中的应用场景 三.金额转换 3.1解题思路 3 ...

最新文章

  1. 嵌入式学习笔记--网络打流补充笔记(iperf3应用)
  2. 如何撰写好一篇论文?密歇根Andrew教授这篇《撰写高影响力论文指南》为你细致讲解论文写作,附视频与pdf...
  3. python的range()和list操作
  4. Rabbitmq基本框架和安装(1)
  5. 消息队列的四大典型使用场景
  6. 用Redux来进行组件间通讯
  7. 如何一秒钟从头构建一个 ASP.NET Core 中间件
  8. 如何获取 OSS AccessKeyId、AccessKeySecret
  9. 12_04_Linux软件管理之四yum
  10. linux下 安装tengine
  11. 计算机网络基础(二)
  12. rtmp http mp4 网页播放器
  13. 积分形式的詹森不等式_均值不等式及其积分形式
  14. H265 Vs VP9
  15. html背景图片纵向拉伸,html网页背景图片拉伸 关于html背景图片往下拉伸问题
  16. Java开发就业前景,2017java开发就业前景分析
  17. IntelliJ Keymap
  18. 1.金融点滴 - 什么是做多、做空?国内股市为什么不能做空?
  19. 咪咕版kindle利用“隐藏浏览器”打开微信读书
  20. 22考研经验贴-这是可以说的吗?

热门文章

  1. 算法介绍——快速排序
  2. 崩坏3 ios 转 android,崩坏3三周年安卓与IOS是否可以互通
  3. Spring入门程序的编写(实验一+第一章知识总结)
  4. JS学习13:三元表达式
  5. 投资理财类的Web网站和APP,提供的核心功能都一样
  6. 怎么样写html写的快一点准确一点呀
  7. PAT [B1026 程序运行时间] C语言
  8. 小米 11 也不送充电头了,什么是完美的解决方案
  9. if结构和if else结构
  10. 深入理解Java迭代器