2012-04-02 75 views
0

該代碼是否可以使用正則表達式進行優化?正則表達式是否會幫助搜索字符串? IN:「abc d efg」OUT:[「%abc%」,「%efg%」]

search = search.split.delete_if{|s|s.length==1}.map{|s|s="%#{s}%"} 

它需要一個字符串,它分爲一個數組並以1:1的長度移除任何要素和包裝在準備用於SQL百分號每個字符串。

IN:"abc d efg" OUT:["%abc%","%efg%"]

+2

由於沒有標杆的證據來支持我的理論,我敢打賭,這個實現實際上比一個正則表達式更快。 – 2012-04-02 18:27:15

+0

很高興知道,有關如何測試的建議? – Jonathan 2012-04-02 18:28:27

+1

如何使用Timecop查看它是更快還是更慢? [https://github.com/jtrupiano/timecop](https://github.com/jtrupiano/timecop) – 2012-04-02 18:33:45

回答

1

這個工作,但基準測試比較慢,我不認爲一個基於正則表達式的解決方案將是更快。

string.scan(/\S{2,}/).map { |word| "%#{word}%" } 

避免重複陣列似乎是我能想到的最快:

words = string.split 
words.reject! { |s| s.length == 1 } 
words.map! { |s| "%#{s}%" } 
words 
相關問題