与之前中文转换成数字相反。数字转换成中文比较简单。直接看代码。
如果有不正确的请指正,谢谢。
public static string ConvertIntToChineseStr(int number)
{
string res = "";
string numStr = Convert.ToString(number);
bool isNegative = false;
if (numStr.StartsWith("-"))
{
numStr = numStr.Remove(0, 1);
isNegative = true;
}
for (int i = numStr.Length - 1; i >= 0; i--)
{
switch (numStr[i])
{
case '0':
res = res.Insert(0, "零");
break;
case '1':
//res += '一';
res = res.Insert(0, "一");
break;
case '2':
//res += '二';
res = res.Insert(0, "二");
break;
case '3':
//res += '三';
res = res.Insert(0, "三");
break;
case '4':
//res += '四';
res = res.Insert(0, "四");
break;
case '5':
//res += '五';
res = res.Insert(0, "五");
break;
case '6':
//res += '六';
res = res.Insert(0, "六");
break;
case '7':
//res += '七';
res = res.Insert(0, "七");
break;
case '8':
//res += '八';
res = res.Insert(0, "八");
break;
case '9':
//res += '九';
res = res.Insert(0, "九");
break;
}
if (i != numStr.Length - 1 && res[0] != '零')
{
int flag = numStr.Length - 1 - i;
switch (flag)
{
case 1:
res = res.Insert(1, "十");
break;
case 2:
res = res.Insert(1, "百");
break;
case 3:
res = res.Insert(1, "千");
break;
case 4:
res = res.Insert(1, "万");
break;
case 5:
res = res.Insert(1, "十万");
break;
case 6:
res = res.Insert(1, "百万");
break;
case 7:
res = res.Insert(1, "千万");
break;
case 8:
res = res.Insert(1, "亿");
break;
case 9:
res = res.Insert(1, "十亿");
break;
}
}
}
//去除两边的"零"
char[] charsToTrim = { ' ', '零' };
res = res.Trim(charsToTrim);
//去除重复的零。
for (int i = 1; i < res.Length - 1; i++)
{
if (res[i - 1] == '零' && res[i] == '零')
{
res = res.Remove(i, 1);
i--;
}
}
if (isNegative)
res = res.Insert(0, "负");
return res;
}