`
phyeas
  • 浏览: 161771 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

将数字形式转换为人民币大写形式的程序实现

阅读更多
<!---->package org.phyeas.demo.number;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class NumberToRMB {
    
private static String[] UNIT = { """""亿" };
    
private static String[] UNIT2 = { """""" };

    
private static final String ZERO = "";

    
private static String[] NUM = { """""""""""""""",
            
"""" };

    
/**
     * 转换一串字符
     * 
     * 
@param str
     * 
@return
     
*/
    
public static String parseCharsToRMB(String str) {
        
if (!isNumber(str)) {
            
throw new IllegalArgumentException("参数不正确,必须为数字");
        }
        StringBuffer buffer 
= new StringBuffer();
        
int count = 0;
        
for (int i = str.length(); i > 0; i -= 4, count++) {
            String char4 
= null;
            
if (i - 4 < 0) {
                System.out.println(
"start=" + 0 + ".end=" + i);
                char4 
= str.substring(0, i);
                buffer.insert(
0, parse4CharsToRMB(char4) + UNIT[count]);
                
break;
            }
            System.out.println(
"start=" + (i - 4+ ".end=" + i);
            char4 
= str.substring(i - 4, i);
            buffer.insert(
0, parse4CharsToRMB(char4) + UNIT[count]);

        }
        
return buffer.toString();
    }

    
/**
     * 转换4位字符
     * 
     * 
@param str
     * 
@return
     
*/
    
public static String parse4CharsToRMB(String str) {
        
if (str.length() > 4 || !isNumber(str)) {
            
throw new IllegalArgumentException("参数不正确,str应该为不大于4位的字符");
        }
        StringBuffer result 
= new StringBuffer();
        
int startUNIT = getStartUNIT(str.length());

        
for (int i = 0; i < str.length(); i++) {
            
if (str.charAt(i) == '0') {
                
if (i == 0) {
                    result.append(ZERO);
                } 
else {
                    appendZero(result, i);
                }
                startUNIT
++;
            } 
else {
                
int index = Integer.parseInt(String.valueOf(str.charAt(i))) - 1;
                result.append(NUM[index]);
                
if (startUNIT < UNIT2.length) {
                    result.append(UNIT2[startUNIT]);
                    startUNIT
++;
                }
            }
        }
        
return result.toString();
    }

    
/**
     * 获取起始位置
     * 
     * 
@param strLength
     * 
@return
     
*/
    
public static int getStartUNIT(int strLength) {
        
switch (strLength) {
        
case 4:
            
return 0;
        
case 3:
            
return 1;
        
case 2:
            
return 2;
        
case 1:
            
return 3;
        
default:
            
return 0;
        }
    }

    
/**
     * 0是特殊的。所以单独一个方法添加0
     * 
     * 
@param buffer
     * 
@param index
     * 
@return
     
*/
    
private static StringBuffer appendZero(StringBuffer buffer, int index) {
        System.out.println(
"buffer=" + buffer);
        String before 
= buffer.substring(index, index + 1);
        System.out.println(
"before=" + before);
        
if (before.equals(ZERO)) {
            
return buffer;
        } 
else {
            buffer.append(ZERO);
        }
        
return buffer;
    }

    
/**
     * 判断是否为数字字符串
     * 
     * 
@param str
     * 
@return
     
*/
    
public static boolean isNumber(String str) {
        
if (str != null && str.length() > 0) {
            Pattern pattern 
= Pattern.compile("[0-9]*");
            Matcher m 
= pattern.matcher(str);
            
if (m.find()) {
                
return true;
            }
            
return false;
        }
        
return false;
    }

    
public static void main(String[] args) {
        System.out.println(
"转换1580654=" + parseCharsToRMB("1580654"));
    }
}
分享到:
评论

相关推荐

    输入数字转换为人民币大写,Delphi源代码.rar

    输入数字转换为人民币大写,Delphi源代码,代码里有个重要的转换单位,此单位共定义两个函数来实现数字金额的中文大写转化,此函数可支持12位整数。程序思路如下: 将小数点前的整数取出,算出整数长度,不足千亿时...

    把人民币数字形式(含小数点)转化为大写形式

    此程序主要实现把输入的人民币数字形式转化为大写的形式,例如:输入为1.56 ;输出为壹元伍角陆分

    实现人民币大小写转换功能

    人民币大小写转换器可以实现在文本框中输入数字人民币,然后通过点击大小写转换按钮,实现将数字人民币转换成大写汉字人民币的形式,并在列一个文本框中显示出来。

    十四位数仿真科学计算器 2.14 绿色版(语音型含注册码).

    显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择...

    仿真科学计算器(语音型) V2.14

    、八进制、二进制、人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹仟肆佰 叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择是否自动存入WINDOWS剪贴 板,并可自动输出在其它程序窗口的...

    十四位数仿真科学计算器(语音型)

    显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择是否...

    仿真语音计算器v1.8

    显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择是否...

    语音计算器(科学计算器软件)v2.14免费版.rar

    显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式。以上各种转换与计算结果可选择是否自动存入WINDOWS剪贴板,并可自动输出在其它程序窗口的当前...

    十四位数仿真科学计算器(语音型)2.11

    并修改了数据转换为\"人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)的一些BUG,大大方便了财务、票据等方面的工作,输入的任何数据和计算结果可自动输入在其它...

    科学计算器 计算器

    并修改了数据转换为"人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹 仟肆佰叁拾伍圆柒角伍分、¥1435.75)的一些BUG,大大方便了财务、票据等方面的工作,输 入的任何数据和计算结果可自动输入在...

    语音计算器下载 绿色版

    显示屏数字可随时转换为下列形式进行计算:十六进制、十进制、八进制、二进制、人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)。以上各种转换与计算结果可选择...

    805881_语音计算器

    并修改了数据转换为"人民币中文大写形式、人民币数字形式(例:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)的一些BUG,大大方便了财务、票据等方面的工作,输入的任何数据和计算结果可自动输入在其它程序...

    EXCEL集成工具箱V8.0完整增强版(精简)

    【数字转英文】 将选中区域(默认)或已使用区域存储格的金额数字转换成英文格式显示的表达字符串,为三资企业制作客户外汇付款通知书的理想工具。 【文本转EXCEL】 将文本文件按指定的分隔符号分隔一次性导入到...

    我整理的VBA 自定义函数大全 共138页

    33.从工作表第一行的标题文字以数字形式返回所在列号 34.在多个工作表中查找一个范围内符合某个指定条件的项目对应指定范围加总求和 35.返回 Column 英文字 36.查找指定列名的列数 37.文字格式的时间(分:秒)转化为...

    Excel公式与函数大辞典.宋翔(带书签高清文字版).pdf

    5.4.6 RMB——将数字转换为带人民币符号¥的文本 177 5.4.7 NUMBERSTRING——将数值转换为大写汉字 178 5.4.8 NUMBERVALUE——以与区域设置无关的方式将文本转换为数字 179 5.4.9 T——将参数转换为文本 179 ...

    语音计算器,带人声的语音计算器

    并修改了数据转换为"人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)的一些BUG,大大方便了财务、票据等方面的工作,输入的任何数据和计算结果可自动输入在其它...

    十四位仿真科学计算器(语音型)V2.1

    并修改了数据转换为"人民币中文大写形式、人民币数字形式(例如:1435.75、人民币壹仟肆佰叁拾伍圆柒角伍分、¥1435.75)的一些BUG,大大方便了财务、票据等方面的工作,输入的任何数据和计算结果可自动输入在其它...

    EXCEL集成工具箱V6.0

    【数字转英文】 将选中区域(默认)或已使用区域存储格的金额数字转换成英文格式显示的表达字符串,为三资企业制作客户外汇付款通知书的理想工具。 【文本转EXCEL】 将文本文件按指定的分隔符号分隔一次性导入到...

    Excel高级插件(17个插件集合)-批量导入插入图片等-Part1

    功能: 将阿拉伯数字转换成人民币大写形式 特点: 1.可以批量操作。 2.可以同时选择多个区域再执行工具。 3.几百个单元格数据瞬间完成转换。 工具: 【大写转小写】 功能: 将人民币大写转换成阿拉伯数字 特点: 1....

    Excel高级插件(17个插件集合)-批量导入插入图片等-Part2

    功能: 将阿拉伯数字转换成人民币大写形式 特点: 1.可以批量操作。 2.可以同时选择多个区域再执行工具。 3.几百个单元格数据瞬间完成转换。 工具: 【大写转小写】 功能: 将人民币大写转换成阿拉伯数字 特点: 1....

Global site tag (gtag.js) - Google Analytics