java 金额比较大小写_java 实现金额大小写转换

该代码段提供了一个Java方法integerTransGBK,用于将输入的数字字符串转换为大写的中文金额表示。方法首先验证输入是否为数字,然后使用映射表将数字与对应的中文大写字符对应,并根据位置插入'万'、'亿'等单位。最后,处理特殊情况进行优化,如去除多余的'零'、'万'、'亿'。
摘要由CSDN通过智能技术生成

privatestaticString integerTransGBK(String input) {

String regix = "[0-9]+";

int[] num = newint[input.length()];

String[] str1 = { "零","壹","贰","叁","肆","伍","陆","柒","玐","玖"};

TreeMap map1 = newTreeMap();

StringBuilder sb = newStringBuilder();

intlen = num.length; //数字的长度

booleanhasZero = false; //是否有0

//是否从第1位,第5为,第9位……开始。用来去除个位上的“零”

booleanzeroFromGeWei = true;

//判断是否是合法数字

if(!input.matches(regix)){

thrownewRuntimeException("对不起,你输入的不是数字!");

}

// 将String数字变成int数组

for(inti = 0; i < num.length; i++) {

num[i] = Integer.parseInt(String.valueOf(input.charAt(i)));

}

// 将str1的元素与数字一一对应

for(inti = 0; i < str1.length; i++) {

map1.put(i, str1[i]);

}

//开始转换字符串

for(inti = len - 1; i>= 0; i--){

intposition = len - i -1;

if( position % 4==0)

zeroFromGeWei = true;

// 如果不是个位,每四位加个万或亿字,交替添加

if(i != (len - 1) && ( position % 4==0)){

if(hasZero ) {

sb.insert(0,"零"); //在万亿之前的0数字,要处理完

hasZero = false;

}

if((position % 8==0)){

sb.insert(0,"亿");

}else{

sb.insert(0,"万");

}

}

//判断数字字符是不是0字符

if(num[i] != 0){

if(hasZero && !zeroFromGeWei ) {

sb.insert(0,"零");

}

hasZero = false;

zeroFromGeWei = false;

sb.insert(0,map1.get(num[i]));

switch(position % 4) {

case1:

sb.insert(1,"拾");

break;

case2:

sb.insert(1,"百");

break;

case3:

sb.insert(1,"千");

break;

default:

break;

}

}else{

hasZero = true;

}

}

//去除零万的情况

intindex = sb.indexOf("零万");

while(index != -1){

sb.delete(index, index+2);

index = sb.indexOf("零万");

}

//去除零亿的情况

index = sb.indexOf("零亿");

while(index != -1){

sb.delete(index, index+1);

index = sb.indexOf("零亿");

}

//去除最后一个字符为0的情况,在低8位为0的情况下,会在亿字后多个零字

index = sb.indexOf("零",sb.length()-1);

if(index != -1){

sb.delete(index, index +1);

}

returnsb.toString();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值