package com.citigroup.ap.rebt.numbertransfer.util;
public class NumberTransferUtil {
static String[] string = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
static String[] string1 = { "拾", "佰", "仟" };
public static String transferInteger(String integer) {
String finalNumber = "";
for (int k = -1; integer.length() > 0; k++) {
int digit = Integer.parseInt(integer.substring(
integer.length() - 1, integer.length()));
String capital = string[digit];
if (k != -1 && digit != 0) {
capital += string1[k % 3];
}
finalNumber = capital + finalNumber;
integer = integer.substring(0, integer.length() - 1);
}
return finalNumber;
}
public static String arabiaToChinese(String number) {
String integer = "";
String decimal = "";
String finalNumber = "";
if (isDecimal(number)) {
integer = number.substring(0, number.indexOf("."));
if (number != null && number.indexOf(".") != -1) {
decimal = number.substring(
number.indexOf(".") + 1,
number.indexOf(".")
+ (number.length() - integer.length()));
}
} else {
integer = number;
}
if (integer.length() <= 4) {
if(integer.equals("0")){
finalNumber="";
}else{
finalNumber = transferInteger(integer) + "元";
}
} else if (integer.length() > 4 && integer.length() <= 8) {
String lowFourBit = "";
lowFourBit = integer.substring(integer.length() - 4,
integer.length());
integer = integer.substring(0, integer.length() - 4);
finalNumber = transferInteger(integer) + "万"
+ transferInteger(lowFourBit) + "元";
} else if (integer.length() > 8 && integer.length() <= 12) {
String lowFourBit = "";
lowFourBit = integer.substring(integer.length() - 4,
integer.length());
String middleFourBit = "";
middleFourBit = integer.substring(integer.length() - 8,
integer.length() - 4);
integer = integer.substring(0, integer.length() - 8);
finalNumber = transferInteger(integer) + "亿"
+ transferInteger(middleFourBit) + "万"
+ transferInteger(lowFourBit) + "元";
} else {
System.out.println("数值过大");
}
finalNumber = finalNumber.replaceAll("(零[拾佰仟])", "零");
finalNumber = finalNumber.replaceAll("(零{2,})", "零");
finalNumber = finalNumber.replaceAll("(零万)", "万");
finalNumber = finalNumber.replaceAll("(零亿)", "亿");
finalNumber = finalNumber.replaceAll("(零元)", "元");
if (isDecimal(number)) {
finalNumber += transferDecimal(decimal);
} else {
finalNumber += "整";
}
return finalNumber;
}
public static boolean isDecimal(String number) {
int i = number.indexOf(".");
if (i == -1) {
return false;
} else {
return true;
}
}
public static String transferDecimal(String decimal) {
String finalNumber = "";
if (decimal.equals("00")) {
finalNumber += "整";
} else {
if (decimal.substring(0, 1).equals("0")) {
int i = Integer.parseInt(decimal.substring(1, 2));
finalNumber = finalNumber + "零" + string[i] + "分";
} else if (decimal.substring(1, 2).equals("0")) {
int i = Integer.parseInt(decimal.substring(0, 1));
finalNumber = finalNumber + string[i] + "角";
} else {
int i = Integer.parseInt(decimal.substring(0, 1));
int j = Integer.parseInt(decimal.substring(1, 2));
finalNumber = finalNumber + string[i] + "角" + string[j] + "分";
}
}
return finalNumber;
}
}