2013-05-13 66 views
-2

我尋找能解決以下問題的替代方法:紅寶石.detect替代

.detect,如果我找stringvalue和給定的值是132stringvalue,它仍然會返回true。我需要一個可以匹配從字符串開始的所有內容的替代方案。除了正則表達式以外的任何建議?

+5

你想實現什麼不清楚,舉一些例子。顯示你的代碼。 – 2013-05-13 17:22:04

+1

正則表達式專門用於這類事情。你爲什麼反對使用它們? – tadman 2013-05-13 17:30:15

+0

這將改變我的代碼的一大部分。我希望有一些類似的功能,只是從字符串開始就做些事情。我想我將不得不使用正則表達式吧 – Darko 2013-05-13 17:42:12

回答

3
[1] pry(main)> %w[foo 456foo bar 123bar].detect {|e| e.to_i > 0} 
=> "456foo" 
[2] pry(main)> %w[foo 456foo bar 123bar].detect {|e| e.start_with?('123')}     
=> "123bar" 
0

您可以使用String#[](見doc):

1.9.3p194 :001 > "123stringvalue"["stringvalue"] 
=> "stringvalue" 
1.9.3p194 :002 > "123stringvalue"["blah"] 
=> nil 

它(如果存在)返回字符串,否則nil