首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

金额 汉语大写表示 转换方法

2012-11-04 
金额 中文大写表示 转换方法/**** 金额 中文大写表示 转换方法,** @param input*金额的字符串形式* @retur

金额 中文大写表示 转换方法

/***  * 金额 中文大写表示 转换方法,  *   * @param input  *            金额的字符串形式  * @return  */ public static String convertCurrency(String input, String currency)   throws Exception {  String s1 = "零壹贰叁肆伍陆柒捌玖";  String s4 = "分角整元拾佰仟万拾佰仟亿拾佰仟";  String temp = "";  String result = "";  if (input == null) {   input = "0";  } else if (input.indexOf('-') == 0) {   input = input.replaceAll("-", "");  }  temp = input.trim();  float f = Float.parseFloat(temp);  int len = 0;  if (temp.indexOf(".") == -1)   len = temp.length();  else   len = temp.indexOf(".");  if (len > s4.length() - 3)   return ("输入字串最大只能精确到仟亿,小数点只能两位!");  int n1, n2 = 0;  String num = "";  String unit = "";  for (int i = 0; i < temp.length(); i++) {   if (i > len + 2) {    break;   }   if (i == len) {    continue;   }   n1 = Integer.parseInt(String.valueOf(temp.charAt(i)));   num = s1.substring(n1, n1 + 1);   n1 = len - i + 2;   unit = s4.substring(n1, n1 + 1);   result = result.concat(num).concat(unit);  }  if ((len == temp.length()) || (len == temp.length() - 1))   result = result.concat("整");  if (len == temp.length() - 2)   result = result.concat("零分");  String regex1[] = { "零仟", "零佰", "零拾" };  String regex2[] = { "零亿", "零万", "零元" };  String regex3[] = { "亿", "万", "元" };  String regex4[] = { "零角", "零分" };  // 第一轮转换把 "零仟", 零佰","零拾"等字符串替换成一个"零"  for (int i = 0; i < 3; i++) {   result = result.replaceAll(regex1[i], "零");  }  // 第二轮转换考虑 "零亿","零万","零元"等情况  // "亿","万","元"这些单位有些情况是不能省的,需要保留下来  for (int i = 0; i < 3; i++) {   // 当第一轮转换过后有可能有很多个零叠在一起   // 要把很多个重复的零变成一个零   result = result.replaceAll("零零零", "零");   result = result.replaceAll("零零", "零");   result = result.replaceAll(regex2[i], regex3[i]);  }  // 第三轮转换把"零角","零分"字符串省略  for (int i = 0; i < 2; i++) {   result = result.replaceAll(regex4[i], "");  }  // 对整数部分为零的处理  if (result.length() > 1 && result.indexOf("元") == 0) {   result = result.substring(1);  } else if (result.equals("元")) {   result = "零元";  }  return currency + result; }

?

热点排行