2012-03-23 10 views
7

Estoy tratando de escribir un programa que puede hacer matemáticas con palabras en inglés.¿Cómo puedo hacer matemáticas con palabras en jQuery?

Por ejemplo, quiero ser capaz de hacer algo como

"four thousand and three" + "seven thousand and twenty nine" 

y obtener una salida como

"eleven thousand and thirty two" 

¿Es posible hacer esto en jQuery?

+3

sí, probablemente lo haya. ¿Qué has intentado? –

+8

Intenté preguntarle SO ... aún no tuve suerte. – Daniel

+0

jaja ... brillante –

Respuesta

14

Sí, he escrito un jQuery plug-in called Word Math que se hizo para este propósito exacto.

Para el ejemplo en su pregunta, sólo puede copiar y pegar este código

alert($.wordMath("four thousand and three").add("seven thousand and twenty nine")); 
//alerts "eleven thousand thirty two" 

y listo! Has realizado algunas palabras matemáticas.

matemáticas de la palabra también puede hacer la conversión de números JavaScript para palabras y viceversa:

$.wordMath.toString(65401.90332) 
// sixty five thousand four hundred one and nine tenths and three thousandths and three ten thousandths and two hundred thousandths 

$.wordMath("three million four hundred and sixty seven thousand five hundred and forty two").value 
// 3467542 

You can read more about how to use the Word Math plugin on its readme page

EDIT: ahora hay una versión de Word matemáticas que no depende de jQuery. Para usarlo, debe descargar el archivo wordMath.vanilla.min.js en el repositorio de gitHub en lugar del archivo wordMath.jquery.js.

El uso de la versión jQuery-less es exactamente igual a la versión de jQuery, excepto que no necesita el prefijo $. en las llamadas. En otras palabras, en lugar de hacer

$.wordMath("fifteen").add("eighteen") 

debe en su lugar escribir

wordMath("fifteen").add("eighteen") 
+2

¿Has estado leyendo mi mente? – Daniel

+0

Tengo curiosidad por qué esto tiene que ser un plugin jQuery? No veo qué poder tiene JQuery sobre simples js aquí? –

+4

@Chimoo: Dos palabras: jQuery! – Daniel

2

Como ya sabe, no puede realizar operaciones matemáticas en las cadenas, por lo que debe comenzar convirtiendo el texto en valores numéricos.

Después de realizar las operaciones matemáticas en los valores numéricos, puede convertir los valores nuevamente en cadenas y generar el resultado.

+0

D'oh! Esperaba "ir a [URL], instalar el plugin [impresionante], copiar/pegar texto de la pregunta SO en el archivo .js y ¡listo!" – Daniel

3

Usted puede usar la biblioteca, pero si usted quiere escribir su propio código se puede empezar con algo como esto.

<script type="text/javascript"> 

var equation = "one plus two"; 
var arrayOfWords = equation.split(" "); 
var functionToEvaluate = ""; 

for(i in arrayOfWords){ 
    functionToEvaluate = functionToEvaluate + GetNumericOrSymbol(arrayOfWords[i]); 
} 

var answer = eval(functionToEvaluate); 
alert(answer); 
//Then your method GetNumericOrSymbol() could so something like this. 

function GetNumericOrSymbol(word){ 
    var assocArray = new Array(); 
    assocArray['one'] = 1; 
    assocArray['two'] = 2; 

    //rest of the numbers to nine 

    assocArray['plus']='+'; 

    //rest of your operators 

    return assocArray[word]; 
} 
</script> 

Algo como quitar el Array de la llamada de función ayudaría a optimizarlo. Me divertí mucho escribiendo esto.

+0

Después de obtener su respuesta, puede pasar por el proceso inverso para crear la cadena. –

Cuestiones relacionadas