java阿拉伯数字与中文金额转换NumberTransferUtil

来源:互联网 发布:电脑硬盘测评软件 编辑:程序博客网 时间:2024/05/21 09:41

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;
 }
}

0 0
原创粉丝点击