使用 C# 代码将数字转换为越南语单词

Convert number to Vienamese word using c# code

我有下面的 C# 代码,用于将数字转换为英文单词。

public static string NumberToWords(int number)
{
if (number == 0)
return "zero";

        if (number < 0)
            return "minus " + NumberToWords(Math.Abs(number));

        string words = string.Empty;

        if ((number / 1000000) > 0)
        {
            words += NumberToWords(number / 1000000) + " million ";
            number %= 1000000;
        }

        if ((number / 1000) > 0)
        {
            words += NumberToWords(number / 1000) + " thousand ";
            number %= 1000;
        }

        if ((number / 100) > 0)
        {
            words += NumberToWords(number / 100) + " hundred ";
            number %= 100;
        }

        if (number > 0)
        {
            if (words != "")
                words += "and ";

            var unitsMap = new[] { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };
            var tensMap = new[] { "zero", "ten", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" };

            if (number < 20)
                words += unitsMap[number];
            else
            {
                words += tensMap[number / 10];
                if ((number % 10) > 0)
                    words += " " + unitsMap[number % 10];
            }
        }

        return words;
    }

我 google 发现了这个 GitHub 但它没有 C# 代码。当我尝试 Google 翻译器并将值替换为上面的代码时,结果是错误的。

越南代码而非 C# GitHub code

使用 google 替换越南语数字值后,输出应如下所示,但失败了。

预期输出 -

 -55                       = Âm năm mươi lăm
    -1,055                    = Âm một nghìn không trăm năm mươi lăm
    101,002,101,000,000,000   = Một trăm lẻ một triệu tỷ không trăm lẻ hai nghìn tỷ một trăm lẻ một tỷ
    100,000,000,000           = Một trăm tỷ
    1,000,000,000,000         = Một nghìn tỷ
    1,000,000,000,000,000     = Một triệu tỷ
    1,000,000,000,000,000,000 = Một tỷ tỷ
    1,000,000,234,000,000,000 = Một tỷ tỷ hai trăm ba mươi tư tỷ
    1,000,000,000,222,000,000 = Một tỷ tỷ hai trăm hai mươi hai triệu
    1,009                     = Một nghìn không trăm lẻ chín
    9                         = Chín
    90                        = Chín mươi
    900                       = Chín trăm
    1,000,000                 = Một triệu
    1,090,000                 = Một triệu không trăm chín mươi nghìn
    1,090,010                 = Một triệu không trăm chín mươi nghìn không trăm mười
    1,000,010                 = Một triệu không trăm mười
    10                        = Mười
    100                       = Một trăm
    55                        = Năm mươi lăm

您可以使用以下功能。我已经做了很长时间了。

public string OutputWord(int position, int[] digits)
    {
        string[] Ones = new string[] { "Zero", "One", 
"Two", "Three", "Four", "Five", "Six", "Seven", "Eight", 
"Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", 
"Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen", 
"Twenty" };
        string[] Tens = new string[] { "Zero", "Ten", 
"Twenty", "Thirty", "Fourty", "Fifty", "Sixty", "Seventy", 
"Eighty", "Ninety" };
        string output = string.Empty;
        switch (position)
        {
            case 5:
                if (digits.Length <= 6)
                    output = Ones[digits[position]] + " 
Lac";
                break;
            case 4:
                int thousand = 
Convert.ToInt32(digits[position].ToString() + 
digits[position - 1].ToString());
                if (thousand < 20)
                    output = Ones[thousand] + " Thousand";
                else
                    output = Tens[digits[position]] + " " + 
Ones[digits[position - 1]] + " Thousand";
                break;
            case 3:
                if (digits.Length <= 4)
                    output = Ones[digits[position]] + " 
Thousand";
                break;
            case 2:
                output = Ones[digits[position]] + " 
Hundred";
                break;
            case 1:
                output = Tens[digits[position]] + " " + 
Ones[digits[position - 1]];
                break;
            case 0:
                output = Ones[digits[position]];
                break;
        }

        return output;
    }

你可以打电话。

string output = string.Empty;
        int[] digits = new int[input.ToString().Length];

        if (input <= 20)
        {
            digits[0] = input;
            output = obj.OutputWord(0, digits);
        }