private static String[] number_zh = new String[]{"零","壹","貳","叄","肆","伍","陸","柒","捌","玖","拾"};//拾是多出位
private static String[] unit_zh = new String[]{"","拾","佰","仟","萬","億"};
public static String shuzizhuanzhongwen(Long number){
//number_zh unit_zh
StringBuffer sb = new StringBuffer();
String str = number.toString();
Stack<String> _stack = new Stack<String>();
for(int i = 0;i < str.length();i++){
_stack.push(number_zh[(int) (number % 10)] );// 帶 拾、佰、仟... 修改為 (int) (number % 10) + getUnitZH(Long.valueOf(i))
number = number / 10;
}
while(!_stack.isEmpty()){
sb.append(_stack.pop());
}
return sb.toString();
}
private static String getUnitZH(Long num){
if(num >= 5 && num < 8){
return getUnitZH(num - 4);
}else if(num > 8){
return getUnitZH(num - 8);
}else if(num == 8){
return unit_zh[5]; //億
}else if(num > 17){
return null;//暫不支持 億億
}else{
return unit_zh[num.intValue()];
}
}
注 : Long 的越界值 好像是 15位,若 17位數得不到支持,請自覺更換數據類型。
@Test
測試類
public static void main(String[] args) {
String str = "5654651555";
Long number = Long.valueOf(str);
System.out.println(shuzizhuanzhongwen(number));
}
結果:
伍拾陸億伍仟肆佰陸拾伍萬壹仟伍佰伍拾伍