银行考题,将阿拉伯数字转换成大写的汉字模式

银行考题,将阿拉伯数字转换成大写的汉字模式

例如 

 

123456789.01  -> 壹亿贰千叁百肆十伍万陆千柒百捌十玖元零壹分

假定:  最小到“分”  最大到 “亿”


仿照之前写过的那个 罗马数字与阿拉伯数字转换的程序写的
1.用数组存 壹.... 
2.用数组存 十 百 千
3.按照“.” 分割 分别处理整数分数   按照“.” 分割 请注意 http://www.iteye.com/topic/165494
4.对“零”的处理
5.正则表达式检验输入有效性 (正则表达式 有必要好好的看看 总结总结  达到能够直接写出来的地步!!!)  后续加上

public class ConvertFromNumericToChinese {
	/**
	 * split 是String的方法 不是StringBuilder的,split(.)的时候的注意问题http://www.iteye.com/topic/165494,
	 * 然后字符串的高低位问题  "123"   第0位 ‘1’.  第1位 ‘2’  这样
 	 * @param args
	 */
	private static String[] chinese = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
	private static String[] units = {"","十","百","千"};
	private static Object String;
	
	private static String convert(String num)
	{
 		StringBuilder sb = new StringBuilder(num);
		String[] str = num.split("\\.");
  		if(str.length==1)
		{//没有小数
			String zheng = convertZheng(str[0]);
 			return zheng+"元整";
		}
  		else
  		{//小数情况
  			String zheng = convertZheng(str[0])+"元";
   			String fen = convertFen(str[1]);
  			return zheng+fen;
  		}
	}   
	private static String convertFen(String str) {
		int length = str.length();
		String temp ="";
		if(length==1)
			temp = chinese[Integer.parseInt(str)]+"角";  
		else{
			if(Integer.parseInt(""+str.charAt(0))!=0)
				temp = chinese[Integer.parseInt(""+str.charAt(0))]+"角";
			else
				temp = "零";
			temp += chinese[Integer.parseInt(""+str.charAt(1))]+"分";
		}
		return temp;
	}
	private static String convertZheng(String str) {
		int length = str.length();
		int startUderWan=0;
		int startY = 0;
		String temp = "";//用于拼接字符串  最后返回
		
		if(length>8)
		{//上亿了。。。
			startY = 1;
			temp += chinese[Integer.parseInt(""+str.charAt(0))]+"亿";
		}
		if(length>4)
		{//上万了
			
			String str1 = str.substring(startY,length-4);
			startUderWan = startY+startUderWan+str1.length();
			List result1 = new ArrayList();
			for(int i=0; i result = new ArrayList();
		for(int i=startUderWan; i
 

你可能感兴趣的:(正则表达式,ITeye)