小写数字转大写中文


package com.heke.ftp.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ChangeNumberToChinese 
{
	private Map<Integer,String> hm; //用来存放大写的中国字体
	
	private Map<String,String> big;
	
	private String oddment;
	
	/**
	 * 构造函数
	 */
   public ChangeNumberToChinese()
   {
	   ini();
   }
   
   
   /**
	 * 
	 * @param s 数字 189608950.25
	 * @return 中文数字 壹亿捌仟玖佰陆拾万捌仟玖佰伍拾元贰角伍分
	 */
	public String changerToMoney(String s )
	{
		s = s.replace(".", "");
		
//System.out.println(s);
		
		String sl = s.substring(s.length() - 2, s.length());
		
		String sf = s.substring(0, s.length() - 2);
		
		sl = oddment(sl);
		
		List<String> list = this.analyze(sf);
		
		String str = this.changeStyle(this.joinAll(list, this));
		
		for(int i = 0 ; i < 4 ; i++)
		{
			str = str.replaceFirst("零佰", "零");
			
			str = str.replaceFirst("零拾", "零");
			
			str = str.replaceFirst("零仟", "零");
			
			str = str.replaceFirst("零万", "万");
			
			str = str.replaceFirst("零亿", "亿");
			
			str = str.replaceFirst("零兆", "兆");
			
			str = str.replaceFirst("零零", "零");
			
			str = str.replaceFirst("零元", "元");
		}
		return str + sl;
	}
	
   /**
    * 
    * @param s 处理的数据
    * @return 编程中文大写数据
    */
   public String changeStyle(String s )
   {
	   while(s.indexOf("亿")!=s.lastIndexOf("亿"))
		{
			s = s.replaceFirst("亿", "");
		}
		
		while(s.indexOf("万")!=s.lastIndexOf("万"))
		{
			s = s.replaceFirst("万", "");
		}
		
		while(s.indexOf("兆")!=s.lastIndexOf("兆"))
		{
			s = s.replaceFirst("兆", "");
		}
	   
	   return s;
   }
   
   /**
    * 
    * @param list 集合
    * @param ct 改对象
    * @return 大写数字初始模型
    */
   public String joinAll(List<String> list,ChangeNumberToChinese ct)
   {
	   
	   String s = "";
		
		for(int i = 0 ; i < list.size() ; i ++)
		{
			s+=ct.oneBone(list.get(i));
//System.out.println(list.get(i));
		}
	   
//System.out.println(s);
		
	   return s + "元";
   }
   
   
   /**
    * 
    * @param s 原始数据  50000
    * @return 处理数据 5 10000
    */
	public String oneBone(String s)
	{
		String c = String.valueOf(s.charAt(0)); //第一位置
		String sr = "1" + s.substring(1, s.length()); //第二位置

		System.out.println(c +"=============" + sr);
		
		String str1 = hm.get(Integer.parseInt(c));
		
		String str2 = big.get(sr);
		
		if(str2==null)
		{
			str2= new String("");
		}
		
		String sAll = str1 + str2;
		
		System.out.println(sAll);
		
		return sAll;
		
	}
	
	
	/**
	 * 
	 * @param s 原始数据 123456
	 * @return 解析成一个list的对象 变成100000 20000 400 50 6 
	 */
	public List<String> analyze(String s)
	{
		//现在有11111111111这样的一个字符串传递乐过来
		
		String sp1 = s;
		
		String sp2 = sp1;
		
		List<String> list = new ArrayList<String>();
		
		for(int i = 0 ; i < sp2.length() ; i++)
		{
			char c = sp1.charAt(0);
			sp1 = sp1.substring(1);
			String str = c + "";
			for(int j = 0 ; j < sp1.length() ; j++)
			{
				
				str += "0";
				
			}
			list.add(str);
		}
		return list;
	}
	
	/**
	 * 对象初始化
	 */
	public void ini()
	{
		hm  = new HashMap<Integer,String>();
		//零壹贰叁肆伍陆柒捌玖
		hm.put(0, "零");
		hm.put(1, "壹");
		hm.put(2, "贰");
		hm.put(3, "叁");
		hm.put(4, "肆");
		hm.put(5, "伍");
		hm.put(6, "陆");
		hm.put(7, "柒");
		hm.put(8, "捌");
		hm.put(9, "玖");
		
		big = new HashMap<String,String>();
		
		big.put("10", "拾");
		big.put("100", "佰");
		big.put("1000", "仟");
		big.put("10000", "万");
		big.put("100000", "拾万");
		big.put("1000000", "佰万");
		big.put("10000000", "仟万");
		big.put("100000000", "亿");
		big.put("1000000000", "拾亿");
		big.put("10000000000", "佰亿");
		big.put("100000000000", "仟亿");
		big.put("1000000000000", "兆");
		big.put("10000000000000", "拾兆");
		big.put("100000000000000", "佰兆");
		big.put("1000000000000000", "仟兆");
	}
	
	/**
	 * 
	 * @param s 小数  25
	 * @return 中文小数 贰角伍分
	 */
	
	public String oddment(String s)
	{
		
		String str = s.replace(String.valueOf(s.charAt(0)), hm.get(Integer.parseInt(String.valueOf(s.charAt(0)))) + "角");
		
//System.out.println(str);
		
		str = str.replace(String.valueOf(str.charAt(2)), hm.get(Integer.parseInt(String.valueOf(str.charAt(2)))) + "分");
		
//		System.out.println(str);
		
		return str;
	}
	
	
	
}

你可能感兴趣的:(编程,C++,c,C#,J#)