Javascript:单词到数字
Javascript: Words to numbers
如何在 JavaScript 中将单词转换为数字?
示例:"从现在起 19 天"将变为"从现在起 19 天"。
我可以使用jQuery或其他库 - 如果不是jQuery,希望它是一个小库。
这是我
对@Greg Hewgill的Python模块的JavaScript替代品,减去代码底部的测试:
var Small = {
'zero': 0,
'one': 1,
'two': 2,
'three': 3,
'four': 4,
'five': 5,
'six': 6,
'seven': 7,
'eight': 8,
'nine': 9,
'ten': 10,
'eleven': 11,
'twelve': 12,
'thirteen': 13,
'fourteen': 14,
'fifteen': 15,
'sixteen': 16,
'seventeen': 17,
'eighteen': 18,
'nineteen': 19,
'twenty': 20,
'thirty': 30,
'forty': 40,
'fifty': 50,
'sixty': 60,
'seventy': 70,
'eighty': 80,
'ninety': 90
};
var Magnitude = {
'thousand': 1000,
'million': 1000000,
'billion': 1000000000,
'trillion': 1000000000000,
'quadrillion': 1000000000000000,
'quintillion': 1000000000000000000,
'sextillion': 1000000000000000000000,
'septillion': 1000000000000000000000000,
'octillion': 1000000000000000000000000000,
'nonillion': 1000000000000000000000000000000,
'decillion': 1000000000000000000000000000000000,
};
var a, n, g;
function text2num(s) {
a = s.toString().split(/['s-]+/);
n = 0;
g = 0;
a.forEach(feach);
return n + g;
}
function feach(w) {
var x = Small[w];
if (x != null) {
g = g + x;
}
else if (w == "hundred") {
g = g * 100;
}
else {
x = Magnitude[w];
if (x != null) {
n = n + g * x
g = 0;
}
else {
alert("Unknown number: "+w);
}
}
}
我对 IE 中的正则表达式和 for-each 错误有点挂断了,但它就在这里。从Python到JavaScript的相当不错的转换,如果我自己可以这么说,我不能。它需要一些工作——"一百二十"是行不通的——但现在已经足够好了。当然,感谢@Greg Hewgill的原文,用Python编写。
这是一个(非常)古老的线程,但如果其他人偶然发现,我根据上述答案制作了一个节点模块,该模块可以完成上述所有操作,也可以:
- 处理短划线和逗号
- 匹配字符串中的多个数字
- 模糊匹配数字单词
- 解释小数位
这是链接: 单词到数字
我为Python编写了一个小模块来做到这一点: https://github.com/ghewgill/text2num/blob/master/text2num.py
将其转换为Javascript应该很简单。
相关文章:
- 这个javascript代码有什么错误,它有将数字转换为单词的功能
- Javascript 正则表达式在特定单词或数字之后拆分
- Javascript:单词到数字
- jQuery 验证输入文本是否仅接受数字、单词或日期
- 检查字符串是否等于一个单词和一个数字
- 数字和单词而不是数字到单词js
- 希望将数字形式的金额转换为单词
- Javascript正则表达式匹配多个单词中至少一个以数字开头的单词,但至少匹配两个单词
- 在jQuery中,只从句子中获取单词或数字的一部分
- 使用开关语句的英文单词数字
- 输入标签从不显示非数字单词的面
- Javascript数字到单词 - vigesimal
- Javascript数字到单词 - vigesimal 200-999
- 如何创建一个计数器循环,该循环在单击提交按钮时启动,并输出多行单词,每个单词前面都有一个数字
- Javascript新手问题,将数字转换为任何单词
- 从字符串中拆分单词,数字,并将其作为JavaScript中的2D数组
- 在字符串中的每个单词之后附加一个数字序列
- 如何在字符串中仅保留单词的第一个字母(缩写)和所有数字
- 提取以字母开头的字母数字单词,忽略其他单词
- 将数字单词转换为数字的通用方法(例如"first"“1 st")