convertendo números em palavras C #

Duplicar Possível:
Como posso converter um inteiro em sua representação verbal?

Alguém pode me dar um código primer que eu poderia trabalhar em converter números em palavras?

Convertendo números em palavras (variando de -1000 a +1000) exemplo: 1000 -> mil

public static string NumberToWords(int number) { if (number == 0) return "zero"; if (number < 0) return "minus " + NumberToWords(Math.Abs(number)); string words = ""; 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; } 

Quando tive que resolver esse problema, criei um dictionary de dados codificado para mapear entre números e suas palavras associadas. Por exemplo, o seguinte pode representar algumas inputs no dictionary:

 {1, "one"} {2, "two"} {30, "thirty"} 

Você só precisa se preocupar com o mapeamento de números nas posições 10 ^ 0 (1,2,3, etc.) e 10 ^ 1 (10,20,30) porque, quando chegar a 100, você simplesmente precisa saber quando use palavras como cem, mil, milhões, etc. em combinação com o seu mapa. Por exemplo, quando você tem um número como 3.240.123, obtém: três milhões duzentos e quarenta mil cento e vinte e três .

Depois de construir seu mapa, você precisa trabalhar com cada dígito no seu número e descobrir a nomenclatura apropriada para seguir com ele.

Você realmente precisa fornecer mais detalhes sobre o que você quer dizer. Você quer dizer “palavras” ou “cordas”?

Por exemplo, se você quiser converter um número em uma string, então você só precisa de algo como isto:

 int i = 123; string text = i.ToString(); 

Na verdade, você pode até fazer isso:

 (123).ToString(); // u need to put number in parenthesis 

e até mesmo

 (123.5).ToString(); // this always trips me out 

No entanto, se você precisar converter 123 em one hundred twenty three , precisará fazer mais análise. Você teria que dividir o número em partes, como centenas, décimos e assim por diante.

Você pode começar obtendo o tamanho da string (por ints) para descobrir por onde começar a divisão. Por exemplo, 123 tem 3 dígitos, então deixe N = 3 ei = 1. Em seguida, você começa dividindo 123 por 10 (Ni) ou 100. Isso dá a você 1. Agora você sabe que a palavra começará com “um cem”. Então incremente i, subtraia esse número (100) e divida por 10 (Ni), ou 10 – isto te dá 2. Faça isso até N == i.

Espero que isto ajude. Você deve realmente editar sua pergunta.