我想創建一個正則表達式來刪除所有非字母字符但保留空格。這是清理搜索輸入之前,它擊中分貝。這是我到目前爲止:如何從字符串中去除非字母數字字符並保留空格?
@search_query = @search_query.gsub(/[^0-9a-z]/i, '')
這裏的問題是它刪除所有的空格。如何保留空間的解決方案?
我想創建一個正則表達式來刪除所有非字母字符但保留空格。這是清理搜索輸入之前,它擊中分貝。這是我到目前爲止:如何從字符串中去除非字母數字字符並保留空格?
@search_query = @search_query.gsub(/[^0-9a-z]/i, '')
這裏的問題是它刪除所有的空格。如何保留空間的解決方案?
一個更好的答案(至少在紅寶石)是:
@search_query.gsub!(/^(\w|\s*)/,'')
這將刪除(a)單個字符或(b)從字符串開頭的任意數量的空格。完全不相關的問題,因此不是一個答案。 – Sigi 2014-05-04 19:48:34
犯了一個大錯誤。不知道我在想什麼:=( – 2014-05-10 19:03:57
在這種情況下,我會使用爆炸方法(GSUB,而不是!的gsub)以便永久清理輸入。
#permanently filter all non-alphanumeric characters, except _
@search_query.gsub!(/\W/,'')
這可以避免在代碼中的其他位置使用@seach_query而不清除它的情況。
如果沒有匹配的話,爆炸版本將返回nil,可能不是你想要的結果或者期望的結果從文檔_「執行替換如果沒有替換被執行,String#gsub就緒,返回str,否則爲零。如果沒有給出塊和沒有替換,則返回枚舉器。「_ – dft 2016-01-20 06:45:14
在他的例子中,沒有使用返回值,所以這幾乎是無關。 – 2017-03-22 08:36:08
我會使用包含方法。除了排除除數字外的所有數字,我只會包含數字。例如。
@search_query.scan(/[\da-z\s]/i).join
我不做Rails開發,但爲什麼你不能讓Rails做衛生處理? – 2011-05-24 23:04:41