17

是否有任何内置的 js/jquery 函数可以将 1 转换为第一、2 转换为第二、3 转换为第三……等等?

前任:

Num2Str(1); //returns first;
Num2str(2); //returns second;

我不想为 100 个数字编写函数。请帮忙。

4

2 回答 2

37

它没有内置功能。

我确实写了一个最多 99:

var special = ['zeroth','first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eighth', 'ninth', 'tenth', 'eleventh', 'twelfth', 'thirteenth', 'fourteenth', 'fifteenth', 'sixteenth', 'seventeenth', 'eighteenth', 'nineteenth'];
var deca = ['twent', 'thirt', 'fort', 'fift', 'sixt', 'sevent', 'eight', 'ninet'];

function stringifyNumber(n) {
  if (n < 20) return special[n];
  if (n%10 === 0) return deca[Math.floor(n/10)-2] + 'ieth';
  return deca[Math.floor(n/10)-2] + 'y-' + special[n%10];
}

// TEST LOOP SHOWING RESULTS
for (var i=0; i<100; i++) console.log(stringifyNumber(i));

演示:http: //jsbin.com/AqetiNOt/1/edit

于 2013-12-06T14:18:47.903 回答
3

您可以创建一个数字生成器:

您将需要创建一种万无一失的方法来将单个数字按幂转换为字符串。

1234 -->1(一)*10^3(千)+2(二)*10^2(百)+3(三)10(十)+4(四)(一)
==>一千二一百三十四

123456 --> 十二万三千四百五十六

如果您对符号感到疑惑:我试图将其分解为您需要做出的单个决策步骤

构建规则每三个数字重复一次。剩下的就看你了。

哦,在我忘记之前:th 规则只有“3”个例外。一、二、三。

于 2013-12-06T14:16:20.170 回答