代码之家  ›  专栏  ›  技术社区  ›  GateKiller

将整数转换为书面数字

  •  56
  • GateKiller  · 技术社区  · 16 年前

    是否有将整数转换为书面数字的有效方法,例如:

    string Written = IntegerToWritten(21);
    

    将返回“二十一”。

    有没有什么方法可以做到这一点,而不需要一个庞大的查表?

    12 回复  |  直到 7 年前
        1
  •  62
  •   Wedge    8 年前

    这应该可以很好地工作:

    public static class HumanFriendlyInteger
    {
        static string[] ones = new string[] { "", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine" };
        static string[] teens = new string[] { "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" };
        static string[] tens = new string[] { "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" };
        static string[] thousandsGroups = { "", " Thousand", " Million", " Billion" };
    
        private static string FriendlyInteger(int n, string leftDigits, int thousands)
        {
            if (n == 0)
            {
                return leftDigits;
            }
    
            string friendlyInt = leftDigits;
    
            if (friendlyInt.Length > 0)
            {
                friendlyInt += " ";
            }
    
            if (n < 10)
            {
                friendlyInt += ones[n];
            }
            else if (n < 20)
            {
                friendlyInt += teens[n - 10];
            }
            else if (n < 100)
            {
                friendlyInt += FriendlyInteger(n % 10, tens[n / 10 - 2], 0);
            }
            else if (n < 1000)
            {
                friendlyInt += FriendlyInteger(n % 100, (ones[n / 100] + " Hundred"), 0);
            }
            else
            {
                friendlyInt += FriendlyInteger(n % 1000, FriendlyInteger(n / 1000, "", thousands+1), 0);
                if (n % 1000 == 0)
                {
                    return friendlyInt;
                }
            }
    
            return friendlyInt + thousandsGroups[thousands];
        }
    
        public static string IntegerToWritten(int n)
        {
            if (n == 0)
            {
                return "Zero";
            }
            else if (n < 0)
            {
                return "Negative " + IntegerToWritten(-n);
            }
    
            return FriendlyInteger(n, "", 0);
        }
    }
    

    (编辑以修复百万、十亿等的错误)

        2
  •  12
  •   Mari Faleiros    8 年前

    我使用这个叫做Humanizer的方便的库。

    https://github.com/Humanizr/Humanizer

    它支持多种文化,不仅可以将数字转换为单词,还可以转换为日期,而且使用起来非常简单。

    以下是我如何使用它:

    int someNumber = 543;
    var culture = System.Globalization.CultureInfo("en-US");
    var result = someNumber.ToWords(culture); // 543 -> five hundred forty-three
    

    还有Voice!

        3
  •  7
  •   Nick Masao    9 年前

    我使用这个代码。它是VB代码,但您可以很容易地将其转换为C。它工作

    Function NumberToText(ByVal n As Integer) As String
    
       Select Case n
    Case 0
      Return ""
    
    Case 1 To 19
      Dim arr() As String = {"One","Two","Three","Four","Five","Six","Seven", _
        "Eight","Nine","Ten","Eleven","Twelve","Thirteen","Fourteen", _
          "Fifteen","Sixteen","Seventeen","Eighteen","Nineteen"}
      Return arr(n-1) & " "
    
    Case 20 to 99
      Dim arr() as String = {"Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"}
      Return arr(n\10 -2) & " " & NumberToText(n Mod 10)
    
    Case 100 to 199
      Return "One Hundred " & NumberToText(n Mod 100)
    
    Case 200 to 999
      Return NumberToText(n\100) & "Hundreds " & NumberToText(n mod 100)
    
    Case 1000 to 1999
      Return "One Thousand " & NumberToText(n Mod 1000)
    
    Case 2000 to 999999
      Return NumberToText(n\1000) & "Thousands " & NumberToText(n Mod 1000)
    
    Case 1000000 to 1999999
      Return "One Million " & NumberToText(n Mod 1000000)
    
    Case 1000000 to 999999999
      Return NumberToText(n\1000000) & "Millions " & NumberToText(n Mod 1000000)
    
    Case 1000000000 to 1999999999
      Return "One Billion " & NumberTotext(n Mod 1000000000)
    
    Case Else
      Return NumberToText(n\1000000000) & "Billion " _
        & NumberToText(n mod 1000000000)
    End Select
    End Function
    

    这是C中的代码#

    public static string AmountInWords(double amount)
    {
            var n = (int)amount;
    
            if (n == 0)
                return "";
            else if (n > 0 && n <= 19)
            {
                var arr = new string[] { "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" };
                return arr[n - 1] + " ";
            }
            else if (n >= 20 && n <= 99)
            {
                var arr = new string[] { "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" };
                return arr[n / 10 - 2] + " " + AmountInWords(n % 10);
            }
            else if (n >= 100 && n <= 199)
            {
                return "One Hundred " + AmountInWords(n % 100);
            }
            else if (n >= 200 && n <= 999)
            {
                return AmountInWords(n / 100) + "Hundred " + AmountInWords(n % 100);
            }
            else if (n >= 1000 && n <= 1999)
            {
                return "One Thousand " + AmountInWords(n % 1000);
            }
            else if (n >= 2000 && n <= 999999)
            {
                return AmountInWords(n / 1000) + "Thousand " + AmountInWords(n % 1000);
            }
            else if (n >= 1000000 && n <= 1999999)
            {
                return "One Million " + AmountInWords(n % 1000000);
            }
            else if (n >= 1000000 && n <= 999999999)
            {
                return AmountInWords(n / 1000000) + "Million " + AmountInWords(n % 1000000);
            }
            else if (n >= 1000000000 && n <= 1999999999)
            {
                return "One Billion " + AmountInWords(n % 1000000000);
            }
            else
            {
                return AmountInWords(n / 1000000000) + "Billion " + AmountInWords(n % 1000000000);
            }
        }
    
        4
  •  4
  •   Calanus    16 年前

    贾斯汀·罗杰斯有一门“数字英语”课,应该能很好地为你做好这项工作!

    初始过账。
    http://weblogs.asp.net/justin_rogers/archive/2004/06/09/151675.aspx

    最终确定的源代码
    http://weblogs.asp.net/justin_rogers/articles/151757.aspx

    它确实有一个内部查找表,但我真的不知道您将如何摆脱它。

        5
  •  3
  •   Markus Safar    8 年前

    为什么要使用大型查找表?

    string GetWrittenInteger(int n)
    {
      string[] a = new string[] {"One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine" }
      string[] b = new string[] { "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" }
      string[] c = new string[] {"Twenty", "Thirty", "Forty", "Sixty", "Seventy", "Eighty", "Ninety"};
      string[] d = new string[] {"Hundred", "Thousand", "Million"}
      string s = n.ToString();
    
      for (int i = 0; i < s.Length; i++)
      {
        // logic (too lazy but you get the idea)
      }
    }
    
        6
  •  2
  •   Markus Safar    8 年前
    using System;
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    
    namespace tryingstartfror4digits 
    { 
        class Program 
        { 
            static void Main(string[] args)
            {
                Program pg = new Program();
                Console.WriteLine("Enter ur number");
                int num = Convert.ToInt32(Console.ReadLine());
    
                if (num <= 19)
                {
                    string g = pg.first(num);
                    Console.WriteLine("The number is " + g);
                }
                else if ((num >= 20) && (num <= 99))
                {
                        if (num % 10 == 0)
                        {
                            string g = pg.second(num / 10);
                            Console.WriteLine("The number is " + g);
                        }
                        else
                        {
                            string g = pg.second(num / 10) + pg.first(num % 10);
                            Console.WriteLine("The number is " + g);
                        }
                }
                else if ((num >= 100) && (num <= 999))
                {
                    int k = num % 100;
                    string g = pg.first(num / 100) +pg.third(0) + pg.second(k / 10)+pg.first(k%10);
                    Console.WriteLine("The number is " + g);
                }
                else if ((num >= 1000) && (num <= 19999))
                {
                    int h = num % 1000;
                    int k = h % 100;
                    string g = pg.first(num / 1000) + "Thousand " + pg.first(h/ 100) + pg.third(k) + pg.second(k / 10) + pg.first(k % 10);
                    Console.WriteLine("The number is " + g);
                }
    
                Console.ReadLine();
            }
    
            public string first(int num)
            {
                string name;
    
                if (num == 0)
                {
                    name = " ";
                }
                else
                {
                    string[] arr1 = new string[] { "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine" , "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};
                    name = arr1[num - 1];
                }
    
                return name;
            }
    
            public string second(int num)
            {
                string name;
    
                if ((num == 0)||(num==1))
                {
                     name = " ";
                }
                else
                {
                    string[] arr1 = new string[] { "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" };
                    name = arr1[num - 2];
                }
    
                return name;
            }
    
            public string third(int num)
            {
                string name ;
    
                if (num == 0)
                {
                    name = "";
                }
                else
                {
                    string[] arr1 = new string[] { "Hundred" };
                    name = arr1[0];
                }
    
                return name;
            }
        }
    }
    

    这个从1到19999都可以用,我完成后很快就会更新

        7
  •  2
  •   Markus Safar    8 年前

    公认的答案似乎并不完美。它不处理21这样的数字中的破折号,也不将单词“和”放在“101”这样的数字中,而且,它是递归的。

    这是我的答案。它智能地添加“和”字,并适当地对数字进行连字符。如果需要修改,请通知我。

    下面是如何调用它的方法(显然,您希望将它放在某个类中):

    for (int i = int.MinValue+1; i < int.MaxValue; i++)
    {
        Console.WriteLine(ToWords(i));
    }
    

    代码如下:

    private static readonly string[] Ones = {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};
    
    private static readonly string[] Teens =
    {
        "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen",
        "Seventeen", "Eighteen", "Nineteen"
    };
    
    private static readonly string[] Tens =
    {
        "", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty",
        "Ninety"
    };
    
    public static string ToWords(int number)
    {
        if (number == 0)
            return "Zero";
    
        var wordsList = new List<string>();
    
        if (number < 0)
        {
            wordsList.Add("Negative");
            number = Math.Abs(number);
        }
    
        if (number >= 1000000000 && number <= int.MaxValue) //billions
        {
            int billionsValue = number / 1000000000;
            GetValuesUnder1000(billionsValue, wordsList);
            wordsList.Add("Billion");
            number -= billionsValue * 1000000000;
    
            if (number > 0 && number < 10)
                wordsList.Add("and");
        }
    
        if (number >= 1000000 && number < 1000000000) //millions
        {
            int millionsValue = number / 1000000;
            GetValuesUnder1000(millionsValue, wordsList);
            wordsList.Add("Million");
            number -= millionsValue * 1000000;
    
            if (number > 0 && number < 10)
                wordsList.Add("and");
        }
    
        if (number >= 1000 && number < 1000000) //thousands
        {
            int thousandsValue = number/1000;
            GetValuesUnder1000(thousandsValue, wordsList);
            wordsList.Add("Thousand");
            number -= thousandsValue * 1000;
    
            if (number > 0 && number < 10)
                wordsList.Add("and");
        }
    
        GetValuesUnder1000(number, wordsList);
    
        return string.Join(" ", wordsList);
    }
    
    private static void GetValuesUnder1000(int number, List<string> wordsList)
    {
        while (number != 0)
        {
            if (number < 10)
            {
                wordsList.Add(Ones[number]);
                number -= number;
            }
            else if (number < 20)
            {
                wordsList.Add(Teens[number - 10]);
                number -= number;
            }
            else if (number < 100)
            {
                int tensValue = ((int) (number/10))*10;
                int onesValue = number - tensValue;
    
                if (onesValue == 0)
                {
                    wordsList.Add(Tens[tensValue/10]);
                }
                else
                {
                    wordsList.Add(Tens[tensValue/10] + "-" + Ones[onesValue]);
                }
    
                number -= tensValue;
                number -= onesValue;
            }
            else if (number < 1000)
            {
                int hundredsValue = ((int) (number/100))*100;
                wordsList.Add(Ones[hundredsValue/100]);
                wordsList.Add("Hundred");
                number -= hundredsValue;
    
                if (number > 0)
                    wordsList.Add("and");
            }
        }
    }
    
        8
  •  1
  •   Joe Meyer    12 年前

    这里是一个 C# Console Application 它将返回整数和小数。

        9
  •  1
  •   SArifin    9 年前

    Nick Masao对同一问题的孟加拉数字的答案的扩展。数字的初始输入是Unicode字符串。干杯!!

    string number = "২২৮৯";
    number = number.Replace("০", "0").Replace("১", "1").Replace("২", "2").Replace("৩", "3").Replace("৪", "4").Replace("৫", "5").Replace("৬", "6").Replace("৭", "7").Replace("৮", "8").Replace("৯", "9");
    double vtempdbl = Convert.ToDouble(number);
    string amount = AmountInWords(vtempdbl);
    
    private static string AmountInWords(double amount)
        {
            var n = (int)amount;
    
            if (n == 0)
                return " ";
            else if (n > 0 && n <= 99)
            {
                var arr = new string[] {  "এক", "দুই",  "তিন",  "চার",  "পাঁচ", "ছয়",  "সাত",  "আট",   "নয়",  "দশ",   "এগার", "বারো", "তের",  "চৌদ্দ",    "পনের", "ষোল", "সতের", "আঠার", "ঊনিশ", "বিশ",  "একুশ", "বাইস", "তেইশ", "চব্বিশ",   "পঁচিশ",    "ছাব্বিশ",  "সাতাশ",    "আঠাশ", "ঊনত্রিশ",  "ত্রিশ",    "একত্রিস",  "বত্রিশ",   "তেত্রিশ",  "চৌত্রিশ",  "পঁয়ত্রিশ", "ছত্রিশ",   "সাঁইত্রিশ",    "আটত্রিশ",  "ঊনচল্লিশ", "চল্লিশ",   "একচল্লিশ", "বিয়াল্লিশ",    "তেতাল্লিশ",    "চুয়াল্লিশ",    "পয়তাল্লিশ",    "ছিচল্লিশ", "সাতচল্লিশ",    "আতচল্লিশ", "উনপঞ্চাশ", "পঞ্চাশ",   "একান্ন",   "বায়ান্ন",  "তিপ্পান্ন",    "চুয়ান্ন",  "পঞ্চান্ন", "ছাপ্পান্ন",    "সাতান্ন",  "আটান্ন",   "উনষাট",    "ষাট",  "একষট্টি",  "বাষট্টি",  "তেষট্টি",  "চৌষট্টি",  "পয়ষট্টি",  "ছিষট্টি",  " সাতষট্টি",    "আটষট্টি",  "ঊনসত্তর ", "সত্তর",    "একাত্তর ", "বাহাত্তর", "তেহাত্তর", "চুয়াত্তর", "পঁচাত্তর", "ছিয়াত্তর", "সাতাত্তর", "আটাত্তর",  "ঊনাশি",    "আশি",  "একাশি",    "বিরাশি",   "তিরাশি",   "চুরাশি",   "পঁচাশি",   "ছিয়াশি",   "সাতাশি",   "আটাশি",    "উননব্বই",  "নব্বই",    "একানব্বই", "বিরানব্বই",    "তিরানব্বই",    "চুরানব্বই",    "পঁচানব্বই ",   "ছিয়ানব্বই ",   "সাতানব্বই",    "আটানব্বই", "নিরানব্বই" };
                return arr[n - 1] + " ";
            }
            else if (n >= 100 && n <= 199)
            {
                return AmountInWords(n / 100) + "এক শত " + AmountInWords(n % 100);
            }
    
            else if (n >= 100 && n <= 999)
            {
                return AmountInWords(n / 100) + "শত " + AmountInWords(n % 100);
            }
            else if (n >= 1000 && n <= 1999)
            {
                return "এক হাজার " + AmountInWords(n % 1000);
            }
            else if (n >= 1000 && n <= 99999)
            {
                return AmountInWords(n / 1000) + "হাজার " + AmountInWords(n % 1000);
            }
            else if (n >= 100000 && n <= 199999)
            {
                return "এক লাখ " + AmountInWords(n % 100000);
            }
            else if (n >= 100000 && n <= 9999999)
            {
                return AmountInWords(n / 100000) + "লাখ " + AmountInWords(n % 100000);
            }
            else if (n >= 10000000 && n <= 19999999)
            {
                return "এক কোটি " + AmountInWords(n % 10000000);
            }
            else
            {
                return AmountInWords(n / 10000000) + "কোটি " + AmountInWords(n % 10000000);
            }
        }
    
        10
  •  1
  •   Santhosh    7 年前

    下面的C控制台应用程序代码将接受一个最多2位小数的货币值,并用英语打印。这不仅将整数转换为等值的英语,而且还将其转换为美元和美分的货币价值。

     namespace ConsoleApplication2
    {
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text.RegularExpressions;
        class Program
        {
           static void Main(string[] args)
            {
                bool repeat = true;
                while (repeat)
                {
                    string inputMonetaryValueInNumberic = string.Empty;
                    string centPart = string.Empty;
                    string dollarPart = string.Empty;
                    Console.Write("\nEnter the monetary value : ");
                    inputMonetaryValueInNumberic = Console.ReadLine();
                    inputMonetaryValueInNumberic = inputMonetaryValueInNumberic.TrimStart('0');
    
                    if (ValidateInput(inputMonetaryValueInNumberic))
                    {
    
                        if (inputMonetaryValueInNumberic.Contains('.'))
                        {
                            centPart = ProcessCents(inputMonetaryValueInNumberic.Substring(inputMonetaryValueInNumberic.IndexOf(".") + 1));
                            dollarPart = ProcessDollar(inputMonetaryValueInNumberic.Substring(0, inputMonetaryValueInNumberic.IndexOf(".")));
                        }
                        else
                        {
                            dollarPart = ProcessDollar(inputMonetaryValueInNumberic);
                        }
                        centPart = string.IsNullOrWhiteSpace(centPart) ? string.Empty : " and " + centPart;
                        Console.WriteLine(string.Format("\n\n{0}{1}", dollarPart, centPart));
                    }
                    else
                    {
                        Console.WriteLine("Invalid Input..");
                    }
    
                    Console.WriteLine("\n\nPress any key to continue or Escape of close : ");
                    var loop = Console.ReadKey();
                    repeat = !loop.Key.ToString().Contains("Escape");
                    Console.Clear();
                }
    
            }
    
            private static string ProcessCents(string cents)
            {
                string english = string.Empty;
                string dig3 = Process3Digit(cents);
                if (!string.IsNullOrWhiteSpace(dig3))
                {
                    dig3 = string.Format("{0} {1}", dig3, GetSections(0));
                }
                english = dig3 + english;
                return english;
            }
            private static string ProcessDollar(string dollar)
            {
                string english = string.Empty;
                foreach (var item in Get3DigitList(dollar))
                {
                    string dig3 = Process3Digit(item.Value);
                    if (!string.IsNullOrWhiteSpace(dig3))
                    {
                        dig3 = string.Format("{0} {1}", dig3, GetSections(item.Key));
                    }
                    english = dig3 + english;
                }
                return english;
            }
            private static string Process3Digit(string digit3)
            {
                string result = string.Empty;
                if (Convert.ToInt32(digit3) != 0)
                {
                    int place = 0;
                    Stack<string> monetaryValue = new Stack<string>();
                    for (int i = digit3.Length - 1; i >= 0; i--)
                    {
                        place += 1;
                        string stringValue = string.Empty;
                        switch (place)
                        {
                            case 1:
                                stringValue = GetOnes(digit3[i].ToString());
                                break;
                            case 2:
                                int tens = Convert.ToInt32(digit3[i]);
                                if (tens == 1)
                                {
                                    if (monetaryValue.Count > 0)
                                    {
                                        monetaryValue.Pop();
                                    }
                                    stringValue = GetTens((digit3[i].ToString() + digit3[i + 1].ToString()));
                                }
                                else
                                {
                                    stringValue = GetTens(digit3[i].ToString());
                                }
                                break;
                            case 3:
                                stringValue = GetOnes(digit3[i].ToString());
                                if (!string.IsNullOrWhiteSpace(stringValue))
                                {
                                    string postFixWith = " Hundred";
                                    if (monetaryValue.Count > 0)
                                    {
                                        postFixWith = postFixWith + " And";
                                    }
                                    stringValue += postFixWith;
                                }
                                break;
                        }
                        if (!string.IsNullOrWhiteSpace(stringValue))
                            monetaryValue.Push(stringValue);
                    }
                    while (monetaryValue.Count > 0)
                    {
                        result += " " + monetaryValue.Pop().ToString().Trim();
                    }
                }
                return result;
            }
            private static Dictionary<int, string> Get3DigitList(string monetaryValueInNumberic)
            {
                Dictionary<int, string> hundredsStack = new Dictionary<int, string>();
                int counter = 0;
                while (monetaryValueInNumberic.Length >= 3)
                {
                    string digit3 = monetaryValueInNumberic.Substring(monetaryValueInNumberic.Length - 3, 3);
                    monetaryValueInNumberic = monetaryValueInNumberic.Substring(0, monetaryValueInNumberic.Length - 3);
                    hundredsStack.Add(++counter, digit3);
                }
                if (monetaryValueInNumberic.Length != 0)
                    hundredsStack.Add(++counter, monetaryValueInNumberic);
                return hundredsStack;
            }
            private static string GetTens(string tensPlaceValue)
            {
                string englishEquvalent = string.Empty;
                int value = Convert.ToInt32(tensPlaceValue);
                Dictionary<int, string> tens = new Dictionary<int, string>();
                tens.Add(2, "Twenty");
                tens.Add(3, "Thirty");
                tens.Add(4, "Forty");
                tens.Add(5, "Fifty");
                tens.Add(6, "Sixty");
                tens.Add(7, "Seventy");
                tens.Add(8, "Eighty");
                tens.Add(9, "Ninty");
                tens.Add(10, "Ten");
                tens.Add(11, "Eleven");
                tens.Add(12, "Twelve");
                tens.Add(13, "Thrteen");
                tens.Add(14, "Fourteen");
                tens.Add(15, "Fifteen");
                tens.Add(16, "Sixteen");
                tens.Add(17, "Seventeen");
                tens.Add(18, "Eighteen");
                tens.Add(19, "Ninteen");
                if (tens.ContainsKey(value))
                {
                    englishEquvalent = tens[value];
                }
    
                return englishEquvalent;
    
            }
            private static string GetOnes(string onesPlaceValue)
            {
                int value = Convert.ToInt32(onesPlaceValue);
                string englishEquvalent = string.Empty;
                Dictionary<int, string> ones = new Dictionary<int, string>();
                ones.Add(1, " One");
                ones.Add(2, " Two");
                ones.Add(3, " Three");
                ones.Add(4, " Four");
                ones.Add(5, " Five");
                ones.Add(6, " Six");
                ones.Add(7, " Seven");
                ones.Add(8, " Eight");
                ones.Add(9, " Nine");
    
                if (ones.ContainsKey(value))
                {
                    englishEquvalent = ones[value];
                }
    
                return englishEquvalent;
            }
            private static string GetSections(int section)
            {
                string sectionName = string.Empty;
                switch (section)
                {
                    case 0:
                        sectionName = "Cents";
                        break;
                    case 1:
                        sectionName = "Dollars";
                        break;
                    case 2:
                        sectionName = "Thousand";
                        break;
                    case 3:
                        sectionName = "Million";
                        break;
                    case 4:
                        sectionName = "Billion";
                        break;
                    case 5:
                        sectionName = "Trillion";
                        break;
                    case 6:
                        sectionName = "Zillion";
                        break;
                }
                return sectionName;
            }
            private static bool ValidateInput(string input)
            {
                return Regex.IsMatch(input, "[0-9]{1,18}(\\.[0-9]{1,2})?"))
            }
        }
    }
    
        11
  •  1
  •   Dhiraj D B    7 年前

    只需获取该字符串并用 就像 字符串s=txtNumber.text.ToString(); int i=convert.toint32(s.toString()); 它只写整数值

        12
  •  0
  •   Community WizardZ    7 年前

    只为土耳其代表班 HumanFriendlyInteger (↑)(trk§e,表示为±yaz±kar±l±):

    public static class HumanFriendlyInteger
    {
        static string[] ones = new string[] { "", "Bir", "İki", "Üç", "Dört", "Beş", "Altı", "Yedi", "Sekiz", "Dokuz" };
        static string[] teens = new string[] { "On", "On Bir", "On İki", "On Üç", "On Dört", "On Beş", "On Altı", "On Yedi", "On Sekiz", "On Dokuz" };
        static string[] tens = new string[] { "Yirmi", "Otuz", "Kırk", "Elli", "Altmış", "Yetmiş", "Seksen", "Doksan" };
        static string[] thousandsGroups = { "", " Bin", " Milyon", " Milyar" };
    
        private static string FriendlyInteger(int n, string leftDigits, int thousands)
        {
            if (n == 0)
            {
                return leftDigits;
            }
    
            string friendlyInt = leftDigits;
    
            if (friendlyInt.Length > 0)
            {
                friendlyInt += " ";
            }
    
            if (n < 10)
                friendlyInt += ones[n];
            else if (n < 20)
                friendlyInt += teens[n - 10];
            else if (n < 100)
                friendlyInt += FriendlyInteger(n % 10, tens[n / 10 - 2], 0);
            else if (n < 1000)
                friendlyInt += FriendlyInteger(n % 100, ((n / 100 == 1 ? "" : ones[n / 100] + " ") + "Yüz"), 0); // Yüz 1 ile başlangıçta "Bir" kelimesini Türkçe'de almaz.
            else
                friendlyInt += FriendlyInteger(n % 1000, FriendlyInteger(n / 1000, "", thousands + 1), 0);
    
            return friendlyInt + thousandsGroups[thousands];
        }
    
        public static string IntegerToWritten(int n)
        {
            if (n == 0)
                return "Sıfır";
            else if (n < 0)
                return "Eksi " + IntegerToWritten(-n);
    
            return FriendlyInteger(n, "", 0);
        }