[JAVA]求一个将数字字符串转换成人民币读法的方法();
2个回答
2013-03-29
展开全部
上午也看到有人问这个,不知道和Lz是不是同一个人~
我直接复制好了,那边的那个是我写的,要是有漏洞还希望可以积极指出,我会尽快完善:
package com.ufotable.test;
import java.math.BigDecimal;
public class Test8 {
public enum RMB{
角,分,元,十,百,千,万W,十万,百万,千万,亿Y,十亿,百亿,千亿,万W亿,十万亿,百万亿,千万亿,兆Z,十兆,百兆,千兆,万W兆,十万兆,百万兆,千万兆,亿Y兆
} public enum NUM{
零,壹,贰,叁,肆,伍,陆,柒,玐,玖
}
static String read(Integer rmb){
return read(rmb.toString());
}
static String read(double rmb){
return read(new BigDecimal(rmb).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
}
static String read(Long rmb){
return read(rmb.toString());
}
static String read(String rmb){
String str1=rmb.replaceAll("\\.\\d*", ""),
str2=rmb.replaceAll("[-]|\\d+\\.", ""),
str3="";
if(rmb.charAt(0)=='-'){str1=str1.substring(1);str3="负";}
int i = 0;
while(i<str1.length()){
int j = str1.length()-i+1;
int c=(str1.charAt(i++)-'0')%9;
str3+=NUM.values()[c].name()+
RMB.values()[j];
}
int j=0;
while(j<str2.length()&&j<2){
int c=(str2.charAt(j++)-'0')%9;
str3+=NUM.values()[c].name()+RMB.values()[j-1];
}
str3=str3.replaceAll("万", "").replaceAll("亿", "").replaceAll("兆", "").
replaceAll("零{1}[兆,亿,万,千,百,十,角]{1}", "零").
replaceAll("零+", "零").
replaceAll("W", "万").
replaceAll("Y", "亿").
replaceAll("Z", "兆").
replaceAll("零亿", "亿").
replaceAll("零万", "万").
replaceAll("零兆", "兆").
replaceAll("零元|元零", "元").
replaceAll("零分|元分", "元").
replaceAll("角元", "角");
return str3;
}
public static void main(String[] args) {
System.out.println(read(2411004444500203.405));
}
}
输出结果:
贰千肆百壹十壹万零肆十肆亿肆千肆百伍十万零贰百零叁元伍角
我直接复制好了,那边的那个是我写的,要是有漏洞还希望可以积极指出,我会尽快完善:
package com.ufotable.test;
import java.math.BigDecimal;
public class Test8 {
public enum RMB{
角,分,元,十,百,千,万W,十万,百万,千万,亿Y,十亿,百亿,千亿,万W亿,十万亿,百万亿,千万亿,兆Z,十兆,百兆,千兆,万W兆,十万兆,百万兆,千万兆,亿Y兆
} public enum NUM{
零,壹,贰,叁,肆,伍,陆,柒,玐,玖
}
static String read(Integer rmb){
return read(rmb.toString());
}
static String read(double rmb){
return read(new BigDecimal(rmb).setScale(2, BigDecimal.ROUND_HALF_UP).toString());
}
static String read(Long rmb){
return read(rmb.toString());
}
static String read(String rmb){
String str1=rmb.replaceAll("\\.\\d*", ""),
str2=rmb.replaceAll("[-]|\\d+\\.", ""),
str3="";
if(rmb.charAt(0)=='-'){str1=str1.substring(1);str3="负";}
int i = 0;
while(i<str1.length()){
int j = str1.length()-i+1;
int c=(str1.charAt(i++)-'0')%9;
str3+=NUM.values()[c].name()+
RMB.values()[j];
}
int j=0;
while(j<str2.length()&&j<2){
int c=(str2.charAt(j++)-'0')%9;
str3+=NUM.values()[c].name()+RMB.values()[j-1];
}
str3=str3.replaceAll("万", "").replaceAll("亿", "").replaceAll("兆", "").
replaceAll("零{1}[兆,亿,万,千,百,十,角]{1}", "零").
replaceAll("零+", "零").
replaceAll("W", "万").
replaceAll("Y", "亿").
replaceAll("Z", "兆").
replaceAll("零亿", "亿").
replaceAll("零万", "万").
replaceAll("零兆", "兆").
replaceAll("零元|元零", "元").
replaceAll("零分|元分", "元").
replaceAll("角元", "角");
return str3;
}
public static void main(String[] args) {
System.out.println(read(2411004444500203.405));
}
}
输出结果:
贰千肆百壹十壹万零肆十肆亿肆千肆百伍十万零贰百零叁元伍角
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这问题没看懂............解释一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |