将数字转换成汉字,用来对一些对数字有特殊要求的操作
package cn.com.startinfo.zhtc.utils;
/**
* 数字转汉字工具类
* 2018.8.27
* 呆呆
* @author Administrator
*
*/
public class DigitalConversion {
private static final String[] num_lower = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
private static final String[] unit_lower = { "", "十", "百", "千" };
private static final String[] unit_common = {"","万", "亿"};
private static final String[] unit_symbol = {"."};
/**
* 将传入的字符串中的数字转为中文
* 支持时间和费用的转换
* @param digital
* @return
*/
public static String DigitalConversion(String digital) {
String ReturnDigital = "";
if(digital.contains(".")){
String a[]=digital.split("\\.");
ReturnDigital = DigitalConversion.utils(Integer.parseInt(a[0]));
ReturnDigital +="点"+decimal(a[1]);
}else{
String HH = digital.substring(0,digital.indexOf("小"));
String mm = digital.substring(digital.indexOf("时")+1,digital.indexOf("分"));
int intHH = Integer.parseInt(HH);
int intmm = Integer.parseInt(mm);
ReturnDigital = DigitalConversion.utils(intHH);
ReturnDigital +="小时"+DigitalConversion.utils(intmm)+"分钟";
}
return ReturnDigital;
}
private static String decimal(String Time){
String ReturnDecimal = "";
for(int i=0;i<Time.length();i++){
char b=Time.charAt(i);
String o = String.valueOf(b);
ReturnDecimal += utils(Integer.parseInt(o));
}
return ReturnDecimal;
}
private static String utils(int Time){
String digital="";
if(Time < 10){
int a = Time%10;
digital = num_lower[a];
}
else if(Time >= 10 && Time < 100){
String ten = num_lower[Time/10];
String a ="";
if(Time%10 != 0){
a = num_lower[Time%10];
}
digital = ten+unit_lower[1]+a;
}else if(Time >= 100 && Time< 1000){
String best = num_lower[Time/100]+unit_lower[2];
digital = best;
String ten = "";
String a ="";
if((Time%100)/10 != 0){
ten = num_lower[(Time%100)/10];
digital += ten+unit_lower[1];
if((Time%100)%10 != 0){
a = num_lower[(Time%100)%10];
digital += a;
}
}else{
ten = num_lower[0];
if((Time%100)%10 != 0){
a = num_lower[(Time%100)%10];
digital += ten+a;
}
}
}else if(Time>=1000 && Time < 10000){
String thousand = num_lower[Time/1000];//千位
digital = thousand+unit_lower[3];
String best = "";
String ten = "";
String a ="";
if((Time%1000)/100 != 0){
best = num_lower[(Time%1000)/100];
digital += best +unit_lower[2];//百位
if(((Time%1000)%100)/10 != 0){
ten = num_lower[((Time%1000)%100)/10];
digital += ten +unit_lower[1];//十位
if(((Time%1000)%100)%10 != 0){
a = num_lower[((Time%1000)%100)%10];
digital += a;//个位
}
}else{
ten = num_lower[0];
if(((Time%1000)%100)%10 != 0){
a = num_lower[((Time%1000)%100)%10];
digital += ten+a;
}
}
}else{
best = num_lower[0];
if(((Time%1000)%100)/10 != 0){
ten = num_lower[((Time%1000)%100)/10];
digital += best+ten +unit_lower[1];//十位
if(((Time%1000)%100)%10 != 0){
a = num_lower[((Time%1000)%100)%10];
digital += a;//个位
}
}else{
// ten = num_lower[0];
if(((Time%1000)%100)%10 != 0){
a = num_lower[((Time%1000)%100)%10];
digital += best+ten+a;//个位
}
}
}
}
return digital;
}
/* public static void main(String[] args) {
String str = "房估字(2014)第YPQD0006号";
String op = str.substring(0,str.indexOf("第"));//获取字符串到 “第”字之前的数据
String jieguo = str.substring(str.indexOf("第")+1,str.indexOf("号"));//获取字符串“第”+1到“号”字之间的数据
System.out.println(op);
System.out.println(jieguo);
int a = 15;
System.out.println(99/10);
String digital = "0.05";
String a2[]=digital.split("\\.");
System.out.println(a2[0]);
String a1 = "中国人";
char b=a1.charAt(2);
System.out.println(b);
String a = "0.01";
System.out.println(DigitalConversion.DigitalConversion(a));;
}*/
}