Regex - Transformar números em extenso em digitos

1 resposta
javaregex
A

Olá pessoal tudo bem?

Eu estou tentando transformar números em extenso em dígitos, por exemplo:

O número extenso “vinte um” queria criar um regex assim

public static String[] unidades = { "um", "dois", "três", "quatro", "cinco", "seis", "sete", "oito", "nove", "dez", "onze", "doze","treze", "quatorze", "quinze", "dezesseis", "dezessete", "dezoito","dezenove"};

public static String[] dezenas = { "", "vinte", "trinta", "quarenta", "cinquenta", "sessenta", "setenta", "oitenta", "noventa" };

//Quero usar os arrays acima criar um padrão, Ex :

meu_padrao p = dezenas+" "+centenas;

//Que transforme “vinte um” em “21”

Alguém conhece uma forma inteligente de fazer isso usando regex ou outra coisa?

1 Resposta

D

Tem varias formas de fazer isso. Uma forma simples, crie um HashMap<String, Integer> e adicione todos as unidades e dezenas representados com o inteiro, separe a entrada usando o split(" ") e para cada parte, obtenha o valor no Map, depois só somar.

HashMap<String, Integer> numeros;
numeros.add("um", 1);
/* ... */
numeros.add("vinte", 20);
/* ... */

String entrada;
String[] partes = entrada.split(" ");
int resultado = numeros.get(partes[0]) + numeros.get(partes[1]);
Criado 18 de novembro de 2016
Ultima resposta 19 de nov. de 2016
Respostas 1
Participantes 2