快速的問題。在Ruby on Rails中測試單詞是單數還是複數
如何測試單詞以查看它是單數還是複數?
我真的想:
test_singularity('word') # => true
test_singularity('words') # => false
我敢打賭導軌能夠!
謝謝。
快速的問題。在Ruby on Rails中測試單詞是單數還是複數
如何測試單詞以查看它是單數還是複數?
我真的想:
test_singularity('word') # => true
test_singularity('words') # => false
我敢打賭導軌能夠!
謝謝。
那麼在rails中,您可以執行string#singularize|#pluralize
比較來返回true或false值。
但我認爲由於語言本身的性質,這可能需要一些備份來做到完全準確。
你可以做這樣的事情
def test_singularity(str)
str.pluralize != str && str.singularize == str
end
但要看到,如何準確,我跑了快組字。
%w(word words rail rails dress dresses).each do |v|
puts "#{v} : #{test_singularity(v)}"
end
word : true
words : false
rail : true
rails : false
dress : false
dresses : false
我其實是有點驚訝,因爲「禮服」沒有得到正確使用複數,但是當它穿過#singularize它運行到有點障礙的。
'dress'.pluralize # => dresses
'dress'.singularize # => dres
大多數時候我從不測試奇點或複數,我只是將其轉換爲單數或複數形式,我需要。
在Rails的2.3.x版本這是可能的,寫這樣的事情
plural_form = org_word.singularize.pluralize
singular_form = org_word.pluralize.singularize
在此進一步工作,工作的功能是很容易提供:
require 'active_support'
def is_singular?(str)
str.pluralize.singularize == str
end
%w(word words rail rails dress dresses).each do |v|
puts "#{v} : #{is_singular?(v)}"
end
這樣做具有以下輸出:
word : true
words : false
rail : true
rails : false
dress : true
dresses : false
在Rails 4,用給定的詞語,它現在更容易了。你可以做
plural_form = org_word.pluralize
singular_form = org_word.singularize
,因此功能變得更加容易,以及:
require 'active_support'
def is_singular?(str)
str.singularize == str
end
「dress」.singularize問題在這裏解決:https://rails.lighthouseapp.com/projects/8994 /門票/ 2399不正確的inflectors爲業務或性質#ticket-2399-5 – kikito 2009-11-26 11:54:10
inflectors確保複數或單數可以爲困難的情況下定義。例如:對於閥門是必要的。但是大多數時候你只想單數化和複數化模型?所以這些情況將會被糾正(或者你的路線會被搞砸)。但是我的例程確實爲衣服/連衣裙回覆了正確的答案。 – nathanvda 2009-11-26 14:10:08
爲什麼你先投複數? – Simon 2014-08-27 16:39:12
無論是紅寶石,也沒有欄杆都使用了測試上寫着「多」的具體方法。
正如nowk所說,你可以做的最多的是自己實現它們,與word.pluralize
和word.singularize
比較。這將爲您提供一種快速且便宜且通用的測試方式。不過,它會失敗一些。
如果您需要更高的精度,您將需要使用Ruby Linguistics gem,它可以正確處理衣服和連衣裙(但它更重)。
實際上,單軌的東西並不是默認包含在rails上,但可以通過一個inflector來解決。查看我對其他帖子的評論。 – kikito 2009-11-26 11:55:10
「dress」.singularize問題在這裏解決:https://rails.lighthouseapp。com/projects/8994/tickets/2399-incorrect-inflectors-for-business-or-ness#ticket-2399-5 – kikito 2009-11-26 11:53:16