2

ウェブサイトが1回の閲覧、残り1日、1回の回答などを行っているのをよく目にします。私にとって、これは怠惰であり、次のようなものと同じくらい簡単に修正できます。

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

私が知りたいのは、java、python、phpなどの一般的な言語で1つのライナーがあるかどうかです。これを行うサイトにコメントして、コードに追加するのと同じくらい簡単です。それは可能ですか?

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 に答える