2014-04-02 60 views
0

任何人都可以告訴我一個更有效的方法來做url.downcase.include? "some string"在下面的上下文嗎?更有效的不區分大小寫的子串搜索

def source 
    return if url.nil? 

    source = nil 

    if url.downcase.include? 'techcrunch.com' or url.downcase.include? 'tcrn.ch' 
    source = 'techcrunch' 
    end 

    source 
end 

我剛剛開始與Ruby,所以如果你有任何其他的提示,我會很感激他們。

太感謝你了, 帕梅拉

+0

當然,你應該尋找「techcrunch.com'第一,如果你相信它是更可能會比'tcrn.ch'存在;否則,首先搜索'tcrn.ch'。至於提示,習慣於閱讀Ruby方法的文檔。方法如下所示:'klass_name#method_name'。在這裏,例如,您正在使用方法[String#include?](http://www.ruby-doc.org/core-2.1.0/String.html#method-i-include-3F)。 –

回答

1

如果你的意思是計算效率你的是約盡善盡美也許除了呼籲.downcase兩次。但是,真正表現明智的是,在這種簡單的情況下,你不會從任何方面獲得太多改善

如果您正在尋找寫你實現更短的方式,這大概是儘可能短:

def source(url) 
    url =~ /techcrunch\.com|tcrn\.ch/i && 'vimeo' 
end 

source('www.stackoverflow.com') # => nil 
source('www.techcrunch.com') # => "vimeo" 
0
def source 
    return unless url 
    downcased_url = url.downcase 
    'vimeo' if %w[techcrunch.com tcrn.ch].any? { |u| downcased_url.include? u } 
end