2

我经常看到网站做 1 次浏览、1 天还剩 1 次或 1 次回答之类的事情。对我来说,这只是懒惰,因为它通常很容易修复,例如:

if(views == 1)
   print views + " view"
else print views + " views"

我想知道的是,是否有一个通用语言(如 java、python、php 等)的衬里,我可以在执行此操作的网站上发表评论并说,就像将其添加到您的代码中一样简单。那可能吗?

4

3 回答 3

3

在我的网站上处理此问题时,我使用三元运算符。看起来许多基于 c 的编程语言都支持三元运算符。在 php 中就这么简单:

<?= $views . ' view' . ($views == 1 ? '' : 's'); ?>
于 2013-03-26T19:49:21.367 回答
1

如果您使用的是 django (python),则可以使用复数过滤器:

You have {{ num_messages }} message{{ num_messages|pluralize }}.

它也支持特殊情况。看看文档

如果你想在普通的 python 代码中做类似的事情,看看inflect模块。看起来它可以很强大,而且显然猜对了大多数复数:

import inflect
p = inflect.engine()
print("You have {}.".format(p.no('message',num_messages)))

哪个会输出字符串

You have no messages.
You have 1 message.
You have 34 messages.
于 2013-09-18T01:21:16.143 回答
0

您可以使用条件或三元运算符来处理问题,但看起来不同,我们经常以以下方式显示复数/单数词

1 view(s), 1 day(s) left, or 1 answer(s)  

当添加条件可能不简单时,这通常很有用,例如作为输入字段?

对于 Python,您可以创建一个函数来执行重复的比较任务并为您添加一个额外的 's'

>>> def pluralize(n, text):
    return "{} {}{}".format(n,text, 's' if n > 1 else '')

>>> pluralize(3,'word')
'3 words'
>>> pluralize(1,'word')
'1 word'
于 2013-03-26T19:53:56.943 回答