有需求需要把数字转换为中文数字,就写了一个,写个笔记记录一下
java版:
public class UUIDUtil {
public static void main(String[] args){
int a=((Double)(Math.random()*10000)).intValue();
String ss=digitalConversion(a);
System.out.println(ss);
a=((Double)(Math.random()*1000)).intValue();
ss=digitalConversion(a);
System.out.println(ss);
}
public static String digitalConversion(Integer number){
boolean isWan=false;
String[] str={"零","一","二","三","四","五","六","七","八","九"};
String ss[] = new String[]{"","十","百","千","万","十","百","千","亿"};
String s=String.valueOf(number);
StringBuffer sb=new StringBuffer();
for(int i=0;i<s.length();i++){
String index=String.valueOf(s.charAt(i));
sb=sb.append(str[Integer.parseInt(index)]);
int wz=s.length()-1-i;
if(wz>4 && wz<8 && !"0".equals(index)){
isWan=true;
}
if("0".equals(index) ){
if(wz==4 && isWan){
sb.append("万");
}else {
sb.append("零");
}
}else{
sb.append(ss[wz]);
}
}
String res=sb.toString();
while(res.indexOf("零零") != -1){
res=res.replace("零零", "零");
}
if(res.indexOf("零万") !=-1){
res=res.replace("零万", "万");
}
if(res.indexOf("一十")==0){
res=res.substring(1);
}
if(res.indexOf("零")==(res.length()-1)){
res=res.substring(0, res.length()-1);
}
return res;
}
}
js版,js版对java版稍微做了一些改动
function numberToChinese(number){
var isWan=false;
var str=["零","一","二","三","四","五","六","七","八","九"];
var ss = ["","十","百","千","万","十","百","千","亿"];
var s=number+"";
var sb="";
for(var i=0;i<s.length;i++){
var index=s.charAt(i);
sb+=str[parseInt(index)];
var wz=s.length-1-i;
if(wz>4 && wz<8 && "0"!=index){
isWan=true;
}
if("0"==index){
if(wz==4 && isWan){
sb+="万";
}else {
sb+="零";
}
}else{
sb+=ss[wz];
}
}
while(sb.indexOf("零零") != -1){
sb=sb.replace("零零", "零");
}
if(sb.indexOf("零万") !=-1){
sb=sb.replace("零万", "万");
}
if(sb.indexOf("一十")==0){
sb=sb.substring(1);
}
if(sb.indexOf("零")==(sb.length-1)){
sb=sb.substring(0, sb.length-1);
}
return sb;
}