[ruby-on-rails] 문자열에서 영숫자가 아닌 문자를 제거하고 공백을 유지하려면 어떻게합니까?

영숫자가 아닌 모든 문자를 제거하지만 공백은 유지하는 정규식을 만들고 싶습니다. 이것은 db에 도달하기 전에 검색 입력을 정리하는 것입니다. 지금까지 내가 가진 내용은 다음과 같습니다.

@search_query = @search_query.gsub(/[^0-9a-z]/i, '')

여기서 문제는 모든 공백을 제거한다는 것입니다. 공간을 유지하는 방법에 대한 솔루션?



답변

부정 문자 그룹에 공백을 추가하십시오.

@search_query = @search_query.gsub(/[^0-9a-z ]/i, '')


답변

이 경우 입력을 영구적으로 정리하기 위해 bang 메서드 (gsub 대신 gsub!)를 사용합니다.

#permanently filter all non-alphanumeric characters, except _
@search_query.gsub!(/\W/,'')

이렇게하면 정리하지 않고 코드의 다른 곳에서 @seach_query가 사용되는 상황을 피할 수 있습니다.


답변

나는 포함 접근법을 사용했을 것입니다. 숫자를 제외하고 모두 제외하는 대신 숫자 만 포함했습니다. 예

@search_query.scan(/[\da-z\s]/i).join


답변

아마도 이것은 그러한 경우에 효과가있을 것입니다.

# do not replace any word characters and spaces
@search_query = @search_query.gsub(/[^\w ]/g, '')


답변

(적어도 루비에서는) 더 나은 대답은 다음과 같습니다.

@search_query.gsub!(/^(\w|\s*)/,'')


답변