Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)delv
published in(发表于) 2014/1/23 3:13:39
使用C#实现阿拉伯数字到大写中文的转换_[Asp.Net教程]

使用C#实现阿拉伯数字到大写中文的转换_[Asp.Net教程]

using System;


namespace ConsoleApp


{


///


/// 本类实现阿拉伯数字到大写中文的转换


/// 该类没有对非法数字进行判别


/// 请调用NumToChn方法


///


public class NumFormat


{


public NumFormat()


{


//


// TOD 在此处添加构造函数逻辑


//


}


// 转换数字


private char ToNum(char x)


{


string strChnNames="零一二三四五六七八九";


string strNumNames="0123456789";


return strChnNames[strNumNames.IndexOf(x)];


}


// 转换万以下整数


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;


}


private string ToDecimal(string x)


{


string ret="";


for (int i=0;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;


}


}


}


测试工程


using System;


namespace ConsoleApp


{


class MainClass


{


static void Main(string[] args)


{


/*


System.Console.WriteLine("Hello, The World!");


System.Console.WriteLine("My Love!");


ClassTest ct = new ClassTest();


System.Console.WriteLine(ct.Get_Str());


*/


/*


// 重载运算符


MyVector v1 = new MyVector(5, 12);


MyVector v2 = new MyVector(4, 3);


MyVector v3 = new MyVector();


v3 = v1 + v2;


System.Console.WriteLine("{0}测试一下", v3.Length);


*/


// 转换成大写数字


NumFormat nf = new NumFormat();


string x;


while (true)


{


Console.Write("X=");


x = Console.ReadLine();


if (x == "") break;


Console.WriteLine("{0}={1}", x, nf.NumToChn(x));


}


}


}


}


来源:CSDN







If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759