55 votos

Convertir a números enteros a números escritos

¿Existe un método eficiente de convertir a un entero en el número escrito, por ejemplo:

string Written = IntegerToWritten(21);

volvería "Twenty One".

¿Hay alguna manera de hacerlo que no implica una tabla de búsqueda masiva?

62voto

Wedge Puntos 11910

Esto debería funcionar razonablemente bien:

public static class HumanFriendlyInteger

(Editado para que sea considerablemente más concisa).

7voto

ankitjaininfo Puntos 114

Usar este código. Es código VB, pero fácilmente puede traducirlo a C#. Funciona

Function NumberToText(ByVal n As Integer) As String

4voto

Calanus Puntos 6164

Justin Rogers tiene un "NumbersToEnglish" de la clase que debe hacer el trabajo para usted muy bien!

Contabilización inicial.
http://weblogs.asp.net/justin_rogers/archive/2004/06/09/151675.aspx

Finalizó El Código Fuente
http://weblogs.asp.net/justin_rogers/articles/151757.aspx

Tiene un poco de un interno de la tabla de búsqueda, pero yo realmente no sé cómo va a ser capaz de alejarse de eso.

3voto

lubos hasko Puntos 13669

¿por qué tabla de consulta masiva?

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)
  }
}

2voto

Karthik Puntos 11
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;
    }

}
}

Este funciona bien desde 1 a 19999 actualizará pronto después de termine

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X