简易将阿拉伯数字转换成汉语数字,方法比较笨拙!但也算是弄出来了!
static string shi(int num)
{
string tra_num;
switch (num)
{
case 1:
tra_num = "一";
break;
case 2:
tra_num = "二";
break;
case 3:
tra_num = "三";
break;
case 4:
tra_num = "四";
break;
case 5:
tra_num = "五";
break;
case 6:
tra_num = "六";
break;
case 7:
tra_num = "七";
break;
case 8:
tra_num = "八";
break;
case 9:
tra_num = "九";
break;
default:
tra_num = "";
break;
}
return tra_num;
}
static string To_chain(int num)
{
string tra_num = "";
if (num < 10)
{
tra_num = shi(num);
}
else if (num < 100)
{
if (num == 10)
{
tra_num = "十";
}
else if (num < 20)
{
tra_num = "十" + shi(num % 10);
}
else
{
tra_num = shi(num / 10) + "十" + shi(num % 10);
}
}
else if (num < 1000)
{
if (num % 100 == 0)
{
tra_num = shi(num / 100) + "百";
}
else if ((num / 10) % 10 == 0)//中间为零,如108
{
tra_num = shi(num / 100) + "百" + "零" + shi(num % 10);
}
else
{
tra_num = shi(num / 100) + "百" + shi((num / 10) % 10) + "十" + shi(num % 10);
}
}
else if (num < 10000)
{
if (num % 1000 == 0)//如1000,2000
{
tra_num = shi(num / 1000) + "千";
}
else if ((num / 100) % 10 == 0 )//如1011,2011,第三位为零
{
tra_num = shi(num / 1000) + "千零一十" + shi(num %10);
}
else if ((num / 100) % 10 == 0 && (num / 10) % 10 == 0)//第二,三位,均是零,如3004
{
tra_num = shi(num / 1000) + "千" + "零" + shi(num % 10);
}
else if ((num / 100) % 10 == 0)//第三位是零,如2029
{
tra_num = shi(num / 1000) + "千" + "零" + To_chain(num - (num / 1000 * 1000));//调用自身
}
else
{
tra_num = shi(num / 1000) + "千" + To_chain(num - (num / 1000 * 1000));//调用自身
}
}
else if (num < 1000 * 1000 * 1000)
{
//截取
string num_str = num.ToString();
int index = num_str.Length - 4;//万的部分
string wan = num_str.Substring(0, num_str.Length - 4);
string qita = num_str.Substring(num_str.Length - 4, 4);
tra_num = To_chain(int.Parse(wan)) + "万" + To_chain(int.Parse(qita));
}
else
{
tra_num = "超出范围";
}
return tra_num;
}