package Test;
public class Test {
public static void main(String[] args){
//测试
System.out.println(convertNumber(3500908));
System.out.println(convertNumber(101000001010L));
}
public static String convertNumber(long number){
//定义字符数组存储中国数字写法格式
final char[] chineseNumber = new char[]
{ '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' };
//定义字符数组存储中国数字的单位
final char[] units = new char[]
{ '圆', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟'};
//定义一个字符串缓冲区对字符进行存储
StringBuilder sb = new StringBuilder();
int index=0;
long lastNumber = 0;
while(number!=0){
lastNumber = number%10;
sb.insert(0,units[index++]); //从字符串左侧开始插入字符
sb.insert(0,chineseNumber[(int) lastNumber]);
number=number/10;
}
//去零操作,通过正则表达式
return sb.toString().replaceAll("零[拾佰仟]","零").replaceAll("零+亿","亿").replaceAll("零{4}万","零").
replaceAll("零+万","万").replaceAll("零+圆","圆").replaceAll("零+","零")+"整";
}
}
输出:
叁佰伍拾万零玖佰零捌圆整
壹仟零壹拾亿零壹仟零壹拾圆整
package Test;
public class Test {
public static void main(String[] args){
//测试
System.out.println(convertNumber(3500908));
System.out.println(convertNumber(101000001010L));
}
public static String convertNumber(long number){
//定义字符数组存储中国数字写法格式
final char[] chineseNumber = new char[]
{ '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' };
//定义字符数组存储中国数字的单位
final char[] units = new char[]
{ '圆', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟'};
//定义一个字符串缓冲区对字符进行存储
StringBuilder sb = new StringBuilder();
int index=0;
long lastNumber = 0;
while(number!=0){
lastNumber = number%10;
sb.insert(0,units[index++]);
sb.insert(0,chineseNumber[(int) lastNumber]);
number=number/10;
}
//去零操作,通过正则表达式
String a = sb.toString().replaceAll("零[拾佰仟]","零");//零加上括号内的任意字符替换成零
a = a.replaceAll("零+亿","亿");
a = a.replaceAll("零{4}万","零");
a = a.replaceAll("零+万","万"); //零万替换成万
a = a.replaceAll("零+圆","圆");
a = a.replaceAll("零+","零")+"整"; // X重复1次或多次
return a;
}
}