码迷,mamicode.com
首页 > Windows程序 > 详细

C#实现阿拉伯数字转换为汉字数字

时间:2015-07-13 17:43:11      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

   C#实现阿拉伯数字转换为汉字数字

   项目中用到,保存下来为日后用到节约时间

   公共方法(将单个数字转换为汉字)

技术分享
 private char ToNum(char x)
        {
            string strChnNames = "零一二三四五六七八九";
            string strNumNames = "0123456789";
            return strChnNames[strNumNames.IndexOf(x)];
        } 
View Code  
  1、转换为为整数(最高位数为亿)
技术分享
 private string ChangeInt(string x) 
 { 
 string[] strArrayLevelNames=new string[4] {"","","",""}; 
 string ret = ""; 
 int i; 
 for (i=x.Length-1;i>=0;i--) 
 if (x[i] == 0) 
  ret = ToNum(x[i]) + ret; 
 else
  ret = ToNum(x[i]) + strArrayLevelNames[x.Length-1-i] + ret; 
 while ((i=ret.IndexOf("零零"))!=-1) 
 ret=ret.Remove(i, 1); 
 if (ret[ret.Length-1]== && ret.Length>1) 
 ret=ret.Remove(ret.Length-1,1); 
 if (ret.Length>=2 && ret.Substring(0,2)=="一十") 
 ret=ret.Remove(0,1); 
 return ret; 
 } 
 
 // 转换整数 
 private string ToInt(string x) 
 { 
 int len = x.Length; 
 string ret,temp; 
 if (len<=4) 
 ret = ChangeInt(x); 
 else if (len<=8) 
 { 
 ret = ChangeInt(x.Substring(0,len-4)) + ""; 
 temp = ChangeInt(x.Substring(len-4,4)); 
 if (temp.IndexOf("")==-1 && temp!="") 
  ret += "" + temp; 
 else
  ret += temp; 
 } 
 else
 { 
 ret=ChangeInt(x.Substring(0,len-8)) + "亿"; 
 temp=ChangeInt(x.Substring(len-8,4)); 
 if (temp.IndexOf("")==-1 && temp!="") 
  ret += "" + temp; 
 else
  ret += temp; 
 ret += ""; 
 temp = ChangeInt(x.Substring(len-4,4)); 
 if (temp.IndexOf("")==-1 && temp!="") 
  ret += "" + temp; 
 else
  ret += temp; 
 } 
 int i; 
 if ((i=ret.IndexOf("零万"))!=-1) 
 ret = ret.Remove(i+1,1); 
 while ((i=ret.IndexOf("零零"))!=-1) 
 ret = ret.Remove(i,1); 
 if (ret[ret.Length-1]== && ret.Length>1) 
 ret = ret.Remove(ret.Length-1,1); 
 return ret; 
 } 
 
View Code

 2、转换为小数

技术分享
private string ToDecimal(string x) 
 { 
 string ret=""; 
 for (int i=0;i<x.Length;i++) 
 ret += ToNum(x[i]); 
 return ret; 
 } 
 
 public string NumToChn(string x) 
 { 
 if (x.Length==0) 
 return ""; 
 string ret=""; 
 if (x[0]==-) 
 { 
 ret=""; 
 x=x.Remove(0,1); 
 } 
 if (x[0].ToString()==".") 
 x="0"+x; 
 if (x[x.Length-1].ToString()==".") 
 x=x.Remove(x.Length-1,1); 
 if (x.IndexOf(".")>-1) 
 ret += ToInt(x.Substring(0,x.IndexOf(".")))+""+ToDecimal(x.Substring(x.IndexOf(".")+1)); 
 else
 ret += ToInt(x); 
 return ret; 
 } 
View Code

 

 

C#实现阿拉伯数字转换为汉字数字

标签:

原文地址:http://www.cnblogs.com/IceNewMan/p/4643114.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!