ロボットとの戦争:数字の後の名詞の偏向
ターミネーターの最初の部分では、Rhys Kyleがいかにクールなロボットが人間に変装することを学んだかについて話しています。 現在、彼らは本物の肌と髪を持っている、彼らは汗をかいている、など。同じモデルについて、彼はゴムの皮でそれらを区別するのは簡単だと言った。
以前のモデルでさえ非常に単純に異なっていたと思う-彼らは言った:「兵士クリス・カターンは10人の敵を殺し、342ラウンドを使い、0の傷を負った」など、彼らはすぐに発砲した。
実際、これまで、Webの開発にもかかわらず、多くのサイトで「50ユーザー」、「1コメント」、「0投稿」などを見つけることができます。しかし、サイトがあなたに人間の言葉を話し、それを正しく活用するのはどれほど楽しいですか数字による言葉。
そして、結局のところ、これを行うことはまったく難しくありません。
以下は、PHPとJavascriptでこの問題を解決できる簡単な既製の関数です。 それらは非常に単純なので、他の言語に転送することは難しくありません。
この関数は、末尾を選択するエンティティの数と、数字1、4、5の単語の配列(または単語の末尾)を渡します。たとえば、['oyster'、 'oysters'、 'oysters']。
Php
- / **
- *この関数は、語尾の数と配列に基づいて、複数の単語の語尾を返します
- * param $ number Integerエンディングを形成する基になる数値
- * param $ endingsArray Array数字(1、4、5)の単語または語尾の配列、
- *例:配列(「apple」、「apples」、「apples」)
- *文字列を返す
- * /
- 関数 getNumEnding ( $ number 、 $ endingArray )
- {
- $番号 = $番号 % 100 ;
- if ( $ number > = 11 && $ number <= 19 ) {
- $ ending = $ endingArray [ 2 ] ;
- }
- その他 {
- $ i = $数値 % 10 ;
- スイッチ ( $ i )
- {
- case ( 1 ) : $ ending = $ endingArray [ 0 ] ; 休憩 ;
- ケース ( 2 ) :
- ケース ( 3 ) :
- case ( 4 ) : $ ending = $ endingArray [ 1 ] ; 休憩 ;
- デフォルト : $ ending = $ endingArray [ 2 ] ;
- }
- }
- リターン $エンディング ;
- }
Javascript
- / **
- *この関数は、語尾の数と配列に基づいて、複数の単語の語尾を返します
- * param iNumber Integerエンディングを形成する基になる数値
- * param aEndings Array数字の単語または語尾の配列(1、4、5)、
- *例[[apple]、[apples]、[apples]]
- *文字列を返す
- * /
- 関数 getNumEnding ( iNumber 、 aEndings )
- {
- var sEnding 、 i ;
- iNumber = iNumber % 100 ;
- if ( iNumber > = 11 && iNumber <= 19 ) {
- sEnding = aEndings [ 2 ] ;
- }
- その他 {
- i = iNumber % 10 ;
- スイッチ ( i )
- {
- case ( 1 ) : sEnding = aEndings [ 0 ] ; 休憩 ;
- ケース ( 2 ) :
- ケース ( 3 ) :
- ケース ( 4 ) : sEnding = aEndings [ 1 ] ; 休憩 ;
- デフォルト : sEnding = aEndings [ 2 ] ;
- }
- }
- sEndingを返します。
- }
番号0については、ケースを個別に処理することを忘れないでください。たとえば、「0レコード」と書くだけでは十分ではありません。 少なくとも、「レコードなし」と記述するか、一般的に空のブロックをレコードで非表示にしてデザインを変更する必要があります。
UPD:
文字が読めない名前を
訂正してくれた
IGlukhovに感謝し
ます !
All Articles