【问题标题】:How to replace 1 with first, 2 with second,3 with third etc [duplicate]如何用第一个替换1,用第二个替换2,用第三个替换3等[重复]
【发布时间】:2013-12-06 14:01:17
【问题描述】:

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

例如:

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

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

【问题讨论】:

  • umm,为初学者显示代码..,我们也不做你的功课
  • ,没有内置函数。
  • 答案是否定的。但你可以编写自己的函数,这将是有史以来最没用的函数之一
  • @FreshPro 对于这种功能的有用性,我必须不同意
  • 参加look at this,我想这可能就是您要找的。虽然它不使用第一、第二等,而是使用一、二、三等。

标签: javascript jquery ordinals


【解决方案1】:

它没有内置函数。

我确实写了一个最多 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

【讨论】:

  • 这很棒。谢谢你。但是,“第四十”的拼写是错误的。它应该是“四十”......不是拼写纳粹或任何东西。只是想我会指出这一点。
  • @Elliot 这对我来说看起来像是英式和美式英语……
  • 这很有用...谢谢
【解决方案2】:

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

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

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

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

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

建筑规则每三位重复一次。剩下的就看你自己了。

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

【讨论】:

  • 我猜,你为他做了功课。我不认为你是首发,是吗?
  • @anand4tech 你的意思是,tibos 做了功课,我只是向他展示了他如何不需要为每个可能的数字编写一个 switch case??
  • @anand4tech 这个答案不一定对他有用,但对其他人也有用。
  • @Vogel612:+1 指出三个例外!
  • 尝试使用以下库:github.com/marlun78/number-to-words
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
相关资源
最近更新 更多