如何用jQuery中的单词进行数学运算?

时间:2012-03-23 20:05:44

标签: javascript jquery math

我正在尝试编写一个可以用英语单词进行数学运算的程序。

例如,我希望能够做类似

的事情
"four thousand and three" + "seven thousand and twenty nine" 

并获得类似

的输出
"eleven thousand and thirty two"

是否可以在jQuery中执行此操作?

3 个答案:

答案 0 :(得分:14)

是的,我写了jQuery plug-in called Word Math这是为了这个目的。

对于您问题中的示例,您只需复制并粘贴此代码

即可
alert($.wordMath("four thousand and three").add("seven thousand and twenty nine"));
//alerts "eleven thousand thirty two"
瞧,瞧!你已经完成了一些单词数学。

Word Math也可以从Javascript数字转换为单词,反之亦然:

$.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

编辑:现在有一个不依赖于jQuery的Word Math版本。要使用它,您应该在gitHub存储库而不是wordMath.vanilla.min.js文件中下载wordMath.jquery.js文件。

jQuery-less版本的使用与jQuery版本完全相同,只是在调用中不需要$.前缀。换句话说,而不是做

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

你会改为写

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

答案 1 :(得分:3)

您可以使用该库,但如果您想编写自己的代码,可以从这样开始。

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

将Array从函数调用中取出有助于优化它。写这篇文章真的很有趣。

答案 2 :(得分:2)

如您所知,您无法对字符串本身执行数学运算,因此您需要先将文本转换为数值。

对数值执行数学运算后,可以将值转换回字符串并输出结果。