我所拥有的是以下内容:
var numbers = new Array("one", "two", "three", ...);
使用此功能,我可以获取我喜欢的任何数字的文本版本(使用numbers[index + 1]
)。问题是,如果我想要23,456,789转换为文本,甚至22?我将不得不花费余生添加到这个数组中以解释添加的任何数字。
是否有标准的JS或JQuery函数可以为我提供任何数字的文本表示?理想情况下,我喜欢它们没有空格和符号(即22 =二十二,120 =一百二十)。
该应用程序适用于 this 小提琴示例。所述小提琴的详细解释可以在 this 我的其他帖子中找到。
目前,这个问题是真正拥有随处使用代码的最大障碍。
我可以使用类似的东西:
function numbers(a){
var ones = new Array("one", "two", "three", ...);
var tens = new Array("", "twenty", "thirty", ...);
}
然后将数字拆分并应用适当的文本。但是有一种更简单的现有方法吗?在我编写函数之前。
修改
我希望有一个简单的单行。最后,我需要的是独特的类,基于它们在列表中的数字位置,所以我有类似的东西...
function toNumber(a) {
var numbers = new Array("zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine");
var sNumber = a.toString();
for (var i = 0, len = sNumber.length; i < len; i += 1) {
$('p').append(numbers[sNumber[i]]);
}
}
是否足够好。
答案 0 :(得分:0)
var th = ['','thousand','million', 'billion','trillion'];
var dg = ['zero','one','two','three','four', 'five','six','seven','eight','nine'];
var tn = ['ten','eleven','twelve','thirteen', 'fourteen','fifteen','sixteen', 'seventeen','eighteen','nineteen'];
var tw = ['twenty','thirty','forty','fifty', 'sixty','seventy','eighty','ninety'];
function toWords(s)
{
s = s.toString();
s = s.replace(/[\, ]/g,'');
if (s != parseFloat(s)) return 'not a number';
var x = s.indexOf('.');
if (x == -1) x = s.length;
if (x > 15) return 'too big';
var n = s.split('');
var str = '';
var sk = 0;
for (var i=0; i < x; i++)
{
if ((x-i)%3==2)
{
if (n[i] == '1')
{
str += tn[Number(n[i+1])] + ' ';
i++;
sk=1;
}
else if (n[i]!=0)
{
str += tw[n[i]-2] + ' ';
sk=1;
}
}
else if (n[i]!=0)
{
str += dg[n[i]] +' ';
if ((x-i)%3==0) str += 'hundred ';
sk=1;
}
if ((x-i)%3==1)
{
if (sk) str += th[(x-i-1)/3] + ' ';
sk=0;
}
}
if (x != s.length)
{
var y = s.length;
str += 'point ';
for (var i=x+1; i<y; i++) str += dg[n[i]] +' ';
}
return str.replace(/\s+/g,' ');
}