java æ°å转大åæ±åçå®æ´ä¾åï¼è¯·åèï¼
package com.sitinspring;
import java.math.BigDecimal;
import java.util.Hashtable;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* å°é¿æ伯æ°å转æ¢ææ±è¯å¤§åæ°å
* @author sitinspring
* @date 2008-03-25
*/
public class ChineseUpperCaser{
/**
* ç¨äºåå¨æ´æ°é¨å
*/
private String integerPart;
/**
* ç¨äºåå¨å°æ°é¨å
*/
private String floatPart;
/**
* ç¨äºåå¨0-9大åçåå¸è¡¨
*/
private static final Map<String,String> ZerotoNineHt;
/**
* ç¨äºåå¨åç¾å大åçåå¸è¡¨
*/
private static final Map<Integer,String> thHuTenHt;
/**
* ç¨äºåå¨ä¸äº¿å
大åçåå¸è¡¨
*/
private static final Map<Integer,String> wanYiZhaoHt;
static{
ZerotoNineHt=new Hashtable<String,String>();
ZerotoNineHt.put("0", "é¶");
ZerotoNineHt.put("1", "壹");
ZerotoNineHt.put("2", "è´°");
ZerotoNineHt.put("3", "å");
ZerotoNineHt.put("4", "è");
ZerotoNineHt.put("5", "ä¼");
ZerotoNineHt.put("6", "é");
ZerotoNineHt.put("7", "æ");
ZerotoNineHt.put("8", "æ");
ZerotoNineHt.put("9", "ç");
thHuTenHt=new Hashtable<Integer,String>();
thHuTenHt.put(0, "");
thHuTenHt.put(1, "æ¾");
thHuTenHt.put(2, "ä½°");
thHuTenHt.put(3, "ä»");
wanYiZhaoHt=new Hashtable<Integer,String>();
wanYiZhaoHt.put(0, "");
wanYiZhaoHt.put(1, "ä¸");
wanYiZhaoHt.put(2, "亿");
wanYiZhaoHt.put(3, "å
");
}
private static String getWanYiZhao(int level){
String retval="";
do{
retval+=wanYiZhaoHt.get(level % 4);
level-=3;
}while(level>3);
return retval;
}
/**
* æé å½æ°
* @param number
* @throws NumberFormatException
*/
public ChineseUpperCaser(float number) throws NumberFormatException{
this(String.valueOf(number));
}
/**
* æé å½æ°
* @param number
* @throws NumberFormatException
*/
public ChineseUpperCaser(double number) throws NumberFormatException{
this(String.valueOf(number));
}
/**
* æé å½æ°
* @param number
* @throws NumberFormatException
*/
public ChineseUpperCaser(int number) throws NumberFormatException{
this(String.valueOf(number));
}
/**
* æé å½æ°
* @param number
* @throws NumberFormatException
*/
public ChineseUpperCaser(long number) throws NumberFormatException{
this(String.valueOf(number));
}
/**
* æé å½æ°
* @param number
* @throws NumberFormatException
*/
public ChineseUpperCaser(String number) throws NumberFormatException{
String formalNumber=formatNumber(number);
// è¾å以ç»æ´æ°é¨ååå°æ°é¨åèµå¼
String[] arr=formalNumber.split("[.]");
if(arr.length==2){
// æå°æ°ç¹
integerPart=arr[0];
floatPart=arr[1];
}
else{
// æ å°æ°ç¹
integerPart=arr[0];
}
}
public String toString(){
String retval="";
if(integerPart!=null){
retval+=parseIntegerPart();
}
if(floatPart!=null){
retval+=parseFloatPart();
}
else{
retval+="æ´";
}
return retval;
}
/**
* å¾å°æ´æ°é¨åçæ±å大å表示
* @return
*/
private String parseIntegerPart(){
String retval="";
// å°æ´æ°é¨åéåºï¼å 为éè¦åå读å
String reverseIntegerPart="";
for(int i=integerPart.length()-1;i>-1;i--){
reverseIntegerPart+=integerPart.charAt(i);
}
// å°æ´æ°é¨åæåä½å段
Pattern p = Pattern.compile("\\d{4}",Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(reverseIntegerPart);
StringBuffer sb = new StringBuffer();
boolean result = m.find();
while (result) {
// æ¯æ¾å°åä½æ¾ä¸ä¸ªéå·
m.appendReplacement(sb, m.group(0) + ",");
result = m.find();
}
m.appendTail(sb);
// æéå·ååï¼å¾å°åä½åç»æ°æ®çæ°ç»
String[] arr=sb.toString().split(",");
int j;
String str;
for(int i=arr.length-1;i>=0;i--){
String temp=arr[i];
// é¿æ伯æ°å转大åæ±åå åä½ï¼åç¾åï¼
for(j=temp.length()-1;j>=0;j--){
str=String.valueOf(temp.charAt(j));
retval+=ZerotoNineHt.get(str)+thHuTenHt.get(j);
}
retval=retval.replaceAll("(é¶)($)", "$2");// é¶å¨æ«å°¾åå»æ
// å åä½ï¼å
亿ä¸ï¼
retval+=getWanYiZhao(i);
}
// é¶æ¿æ¢
retval=retval.replaceAll("(é¶[ä»ä½°æ¾])", "é¶");
retval=retval.replaceAll("(é¶{2,})", "é¶");
retval=retval.replaceAll("(é¶)($)", "$2");// é¶å¨æ«å°¾åå»æ
return retval;
}
/**
* å¾å°å°æ°é¨åçæ±å大å表示
* @return
*/
private String parseFloatPart(){
String retval="ç¹";
for(int i=0;i<floatPart.length();i++){
String temp=String.valueOf(floatPart.charAt(i));
retval+=ZerotoNineHt.get(temp);
}
return retval;
}
/**
* 对è¾å
¥çå符串è¿è¡éªè¯ï¼å¦æä¸è½è½¬å为æ°åå½¢å¼åæåºæ°å转åå¼å¸¸
* ï¼æ³¨æè¿æ¯ä¸ä¸ªè¿è¡æ¶å¼å¸¸(éæ£æ¥åå¼å¸¸)ï¼ç¨åºä¸ç¨æ¾å¼æè·
* @param number
* @throws NumberFormatException
*/
private String formatNumber(String number) throws NumberFormatException{
return (new BigDecimal(number)).toString();
}
public static void main(String[] args){
String[] arr={"1.543524304302432","12.432423432","123.454235","1234","12345","123456","1234567",
"12345678","123456789","1234567891","12345678912","123456789123","1234567891234","12345678912345",
"123456789123456","1234567891234567","12345678912345678","123456789123456789",
"123456789123456789123456089123456789123456789123450780","0","00","000","0000","01","001","0001",
"00001","10","100","1000","10000","101","1001","10001","100001","1.23","21.234","243400031.233234",
"5400035.980","543.6545"};
//String[] arr={"0","00","000","0000","01","001","0001","00001","10","100","1000","10000","101","1001","10001","100001"};
//String[] arr={"1.23","21.234","243400031.233234","5400035.980","543.6545"};
for(String str:arr){
System.out.println("é¿æ伯æ°åçäºï¼"+str+" 大åæ±åçäºï¼"+new ChineseUpperCaser(str));
}
}
}
温馨提示:答案为网友推荐,仅供参考