2013-06-03 3 views
3

에 문자열 배열에서 가치를 어떻게 문자열의 배열을 가지고있다.루비 2.0

예 : 사용자가 "nike"라는 단어를 입력하는 경우. 결과로 4 문자열을 반환해야합니다.

  "nike air", "nike steam","nike softy" ,"nike strength" 

예 : 사용자가 단어 "adidas"를 입력하는 경우. 그러면 결과로 4 문자열을 반환해야합니다.

  "adidas air","addidas jogar","adidas softy","adidas heels" 

가능합니까?

+3

무엇 코드는 문제를 해결하기 위해 작성했습니다? 이것은 매우 간단한 일입니다. –

+0

직접 관련이 없지만 관련성이있는 것은 아닙니다 : [SQL에는 'LIKE' 술어가 있습니다 (http://en.wikipedia.org/w/index.php?title=Where_ (SQL) & oldid = 555492110 # LIKE). 이 작업을 데이터베이스 계층에서 수행하는 것이 좋습니다. 보다 유연한 솔루션을 제공 할 수 있습니다. –

답변

8
array.grep(query) 

쿼리와 일치하는 배열 하위 집합을 반환합니다.

+0

array.grep ('nike')는 공백 배열이됩니다. – Kashiftufail

+0

String 대신 Regexp를 사용해보십시오. –

+1

@Kashiftufail 즉''nike ''대신'/ nike /'를 사용합니다. – Stefan

7

사용 Enumerable#grep :

matches = array.grep /nike/ 

는 대소 문자를 구분하기위한 /i를 추가합니다.

re = Regexp.new(Regexp.escape(my_str), "i") 

를 또는, 사용자가 특별한 정규 표현식 쿼리를 사용할 수 있도록하기 위해서는, 단지 : : 문자열에서 정규 표현식을 구성하려면

matches = array.grep /#{my_str}/ 
+0

@Phrogh matches = array.grep/nike/정확한 결과를 제공하지만 match = array.grep/"nike"/ 아무것도주지 마십시오. 그래서 내 컨트롤러에서이 코드를 어떻게 실행해야합니까? array.grep/"# {params [: term]}"/ params [: term]은 문자열 값입니다 – Kashiftufail

+1

'array.grep (Regexp.new (Regexp. 탈출 (params [: term]))) – Stefan

2

또는 사용자가 직접 쿼리 방법을 구축 할 수 있습니다 :

def func(array) 
    array.each_with_object [] do |string, return_array| 
    return_array << string if string =~ /nike/ 
    end 
end 
+1

프로그래머와 컴퓨터 모두에게 필요한 것보다 더 많은 작업이 필요합니다. – Phrogz

+0

@Phrogz 확실히 프로그래머를위한 - grep' C-ish의 구현입니까? 그렇지 않다면 grep은 똑같은 일을하지 않겠습니까? 나는 그 순간에 확인할 수 없다. –

2
array = [ "nike air", "nike steam","nike softy" ,"nike strength", 
      "smooth sleeper","adidas air","addidas jogar","adidas softy","adidas heels"] 
array.select{|i| i.include? "nike"} 

# >> ["nike air", "nike steam", "nike softy", "nike strength"] 
+0

이 질문에 대한 답을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. –

+2

@DarylGill이 질문에 대한 대답은 ... – user2398029

+0

@louism 아마도 당신은 변경 사항에 대한 대답을 설명하고 OPS 문제를 해결하기 위해이 접근법을 "최선"이라고 설명해야합니다. –