我有一个项目要求我将数字转换为单词,但关键是将数字转换为:23到二十三,而不是二十三。我发现this script效果很好,除了它没有连字。什么是完成我想要做的最好的方法?
修改
它需要将数字转换为:142到一百四十二,而不是一百四十二或一百四十二
答案 0 :(得分:1)
您可以使用您找到的代码,按空格分割结果并通过hypen加入:
toWords(23).split(' ').join('-');
答案 1 :(得分:1)
这适用于短号码(少于20,000):
number_string.replace(/ty (\S)/g,'ty-$1');
但是,如果你的数字可能会有“四万五”,你必须更加具体:
number_string.replace(/ty (one|two|three|four|five|six|seven|eight|nine)/gi,'ty-$1');
答案 2 :(得分:1)
这是虚线数字的自定义提案。
function wordify(n) {
var word = [],
numbers = {
1: 'One',
2: 'Two',
3: 'Three',
4: 'Four',
5: 'Five',
6: 'Six',
7: 'Seven',
8: 'Eight',
9: 'Nine',
10: 'Ten',
11: 'Eleven',
12: 'Twelve',
t3: 'Thir', // -teen, -ty
t5: 'Fif',
t8: 'Eigh',
20: 'Twenty'
},
hundreds = 0 | (n % 1000) / 100,
tens = 0 | (n % 100) / 10,
ones = n % 10,
part;
if (n === 0) {
return 'Zero';
}
if (hundreds) {
word.push(numbers[hundreds] + ' Hundred');
}
if (tens === 0) {
word.push(numbers[ones]);
} else if (tens === 1) {
word.push(numbers['1' + ones] || (numbers['t' + ones] || numbers[ones]) + 'teen');
} else {
part = numbers[tens + '0'] || (numbers['t' + tens] || numbers[tens]) + 'ty';
word.push(numbers[ones] ? part + '-' + numbers[ones] : part);
}
return word.join(' ');
}
var i;
for (i = 0; i < 2000; i++) {
document.write(wordify(i) + '<br>');
}
答案 3 :(得分:0)
您可以尝试使用lastIndexOf
和substr
功能
var num = toWords(23);
var index = num.lastIndexOf(' ');
if(index != -1) {
num = num.substr(0, index) + "-" + num.substr(index);
}
答案 4 :(得分:0)
有很多好的答案,但没有一个超过4或5位......这就是我最终完成的工作。
END {for (n in emails) {print "sqlite db.sql INSERT INTO users VALUES (" n "," email");"}}
&#13;