人民币小写转换为大写

来源:互联网 发布:淘宝鸿星尔克 编辑:程序博客网 时间:2024/05/21 10:23

将人民币的小写形式转换为大写,例如:调用upper("18.5"),将会返回字符串“壹拾捌圆伍角”。



import org.junit.Test;


/**
 * 测试人民币小写转大写
 * @author zhengzhb
 */
public class UpperMoney {
public String upper(String money) throws Exception{
if(!money.matches("^[1-9]+[0-9]*$|^[1-9]+[0-9]*.[0-9]+$" )){
throw new Exception("钱数格式错误!");
}
String[] part= money.split("\\.");
StringBuffer integer = new StringBuffer();
for(int i=0;i<part[0].length();i++){
char perchar = part[0].charAt(i);
integer.append(this.upperNumber(perchar));
integer.append(this.upperNumber(part[0].length()-i-1));
}

StringBuffer decimal = new StringBuffer();
if(part.length>1 && !"00".equals(part[1])){
int length = part[1].length()>=2?2:part[1].length();
for(int i=0;i<length;i++){
char perchar = part[1].charAt(i);
decimal.append(this.upperNumber(perchar));
if(i==0)decimal.append('角');
if(i==1)decimal.append('分');
}
}
String result = integer.toString()+decimal.toString();
return this.dispose(result);
}


private char upperNumber(char number){
switch(number){
case '0': return '零';
case '1': return '壹';
case '2': return '贰';
case '3': return '叁';
case '4': return '肆';
case '5': return '伍';
case '6': return '陆';
case '7': return '柒';
case '8': return '捌';
case '9': return '玖';
}
return 0;
}

private char upperNumber(int index){


switch(index){
case 0: return '圆';
case 1: return '拾';
case 2: return '佰';
case 3: return '仟';
case 4: return '万';
case 5: return '拾';
case 6: return '佰';
case 7: return '仟';
case 8: return '亿';
case 9: return '拾';
case 10: return '佰';
case 11: return '仟';
}
return 0;
}


private String dispose(String result){
result = result.replaceAll("零仟零佰零拾|零仟零佰|零佰零拾|零仟|零佰|零拾", "零")
.replaceAll("零+", "零").replace("零亿", "亿");
result = result.matches("^.*亿零万[^零]仟.*$" )?result.replace("零万", "零")
:result.replace("零万", "万");
result = result.replace("亿万", "亿").replace("零圆", "圆").replace("零分", "")
.replaceAll("圆零角零分|圆零角$|圆$" , "圆整");
return result;
}


@Test
public void test(){
try {
Assert.assertEquals(upper("1"), "壹圆整");
Assert.assertEquals(upper("10"), "壹拾圆整");
Assert.assertEquals(upper("20.7"), "贰拾圆柒角");
Assert.assertEquals(upper("10.70"), "壹拾圆柒角");
Assert.assertEquals(upper("18.5"), "壹拾捌圆伍角");
Assert.assertEquals(upper("200.5"), "贰佰圆伍角");
Assert.assertEquals(upper("2000"), "贰仟圆整");
Assert.assertEquals(upper("50000"), "伍万圆整");
Assert.assertEquals(upper("500000"), "伍拾万圆整");
Assert.assertEquals(upper("5000000"), "伍佰万圆整");
Assert.assertEquals(upper("50000000"), "伍仟万圆整");
Assert.assertEquals(upper("500000000"), "伍亿圆整");
Assert.assertEquals(upper("5000000000"), "伍拾亿圆整");


Assert.assertEquals(upper("5000000001"), "伍拾亿零壹圆整");
Assert.assertEquals(upper("5000000021"), "伍拾亿零贰拾壹圆整");
Assert.assertEquals(upper("5000000421"), "伍拾亿零肆佰贰拾壹圆整");
Assert.assertEquals(upper("5000005421"), "伍拾亿零伍仟肆佰贰拾壹圆整");
Assert.assertEquals(upper("5000035421"), "伍拾亿零叁万伍仟肆佰贰拾壹圆整");
Assert.assertEquals(upper("5000635421"), "伍拾亿零陆拾叁万伍仟肆佰贰拾壹圆整");
Assert.assertEquals(upper("5004635421"), "伍拾亿零肆佰陆拾叁万伍仟肆佰贰拾壹圆整");
Assert.assertEquals(upper("5024635421"), "伍拾亿贰仟肆佰陆拾叁万伍仟肆佰贰拾壹圆整");
Assert.assertEquals(upper("5224635421"), "伍拾贰亿贰仟肆佰陆拾叁万伍仟肆佰贰拾壹圆整");


Assert.assertEquals(upper("15224635421"), "壹佰伍拾贰亿贰仟肆佰陆拾叁万伍仟肆佰贰拾壹圆整");
Assert.assertEquals(upper("215224635421"), "贰仟壹佰伍拾贰亿贰仟肆佰陆拾叁万伍仟肆佰贰拾壹圆整");


Assert.assertEquals(upper("500021"), "伍拾万零贰拾壹圆整");
Assert.assertEquals(upper("5000821"), "伍佰万零捌佰贰拾壹圆整");
Assert.assertEquals(upper("5050006501"), "伍拾亿伍仟万陆仟伍佰零壹圆整");
Assert.assertEquals(upper("550300001"), "伍亿伍仟零叁拾万零壹圆整");

} catch (Exception e) {
e.printStackTrace();
}
}
}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 换单位后医保卡怎么办 单位没交失业金怎么办 沈阳医保卡密码忘了怎么办 西安网约车资格证怎么办 红跑车卡丢了怎么办 苏州住房公积金密码忘了怎么办 公积金查询密码忘记了怎么办 公积金账户密码忘记了怎么办 公积金网上查询密码忘记了怎么办 苏州改公积金密码忘了怎么办 与单位解除劳动合同公积金怎么办 在泰国钱包丢了怎么办 中山车牌网上选号后怎么办 买楼房70年以后怎么办 暂住证过期2个月怎么办 换领驾驶证超期了怎么办 车牌租出去要不回来怎么办 汽车放久了没电怎么办 上海网约车资格证怎么办 手机掉在滴滴上怎么办 在滴滴上丢手机怎么办 把东西落在出租车上怎么办 租好房子后悔了怎么办 转租房东不退押金怎么办 亲戚借户口本办公租房怎么办 7.1深圳禁行货车怎么办 怎么办无锡市的货车临时通行证 武汉医保卡密码忘了怎么办 打出租车被黑了怎么办 行李掉在出租车上怎么办 家庭农场买农机怎么办补贴 在异地买的保险怎么办 理发店被投诉工商局找我怎么办? 临安市民卡丢了怎么办 合肥分期付款买手机被骗怎么办 公司注销后还遇到投诉怎么办 超市购物结账时少收钱怎么办 卖给顾客东西时会有斜念怎么办 实体店家纺想换货怎么办 劳动仲裁裁决部分不服怎么办 劳动仲裁公司拒不履行怎么办?