我正在尝试编写一个可以用英语单词进行数学运算的程序。
例如,我希望能够做类似
的事情"four thousand and three" + "seven thousand and twenty nine"
并获得类似
的输出"eleven thousand and thirty two"
是否可以在jQuery中执行此操作?
答案 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)
如您所知,您无法对字符串本身执行数学运算,因此您需要先将文本转换为数值。
对数值执行数学运算后,可以将值转换回字符串并输出结果。