将整数转换成对应的中文数字字符串,如1444变为“一千四百四十四”

与之前中文转换成数字相反。数字转换成中文比较简单。直接看代码。
如果有不正确的请指正,谢谢。

 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;
        }
中文转换成数字:https://blog.csdn.net/AHcola233/article/details/86305862

你可能感兴趣的:(C#,算法)