我在表單中有一個字符串輸入字段。我在params散列中獲得了這個值。我應該如何從字符串中刪除除字母和數字之外的所有字符。從Ruby字符串中刪除除字母和數字之外的所有字符
回答
只是提醒良好的人「醇tr
:
asdf.tr('^A-Za-z0-9', '')
這是找到字符範圍的補充和轉換的字符'。
我很好奇,一個\W
字符類是否使用快於範圍和gsub
與tr
:
require 'benchmark'
asdf = [('A'..'z').to_a, ('0'..'9').to_a].join
puts asdf
puts asdf.tr( '^A-Za-z0-9', '')
puts asdf.gsub(/[\W_]+/, '')
puts asdf.gsub(/\W+/, '')
puts asdf.gsub(/\W/, '')
puts asdf.gsub(/[^A-Za-z0-9]+/, '')
puts asdf.scan(/[a-z\d]/i).join
n = 100_000
Benchmark.bm(7) do |x|
x.report("tr:") { n.times do; asdf.tr('^A-Za-z0-9', ''); end }
x.report("gsub1:") { n.times do; asdf.gsub(/[\W_]+/, ''); end }
x.report("gsub2:") { n.times do; asdf.gsub(/\W+/, ''); end }
x.report("gsub3:") { n.times do; asdf.gsub(/\W/, ''); end }
x.report("gsub4:") { n.times do; asdf.gsub(/[^A-Za-z0-9]+/, ''); end }
x.report("scan:") { n.times do; asdf.scan(/[a-z\d]/i).join; end }
end
>> ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
>> ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
>> ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
>> ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
>> ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz
>> ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
>> ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
>> user system total real
>> tr: 0.560000 0.000000 0.560000 ( 0.557883)
>> gsub1: 0.510000 0.000000 0.510000 ( 0.513244)
>> gsub2: 0.820000 0.000000 0.820000 ( 0.823816)
>> gsub3: 0.960000 0.000000 0.960000 ( 0.955848)
>> gsub4: 0.900000 0.000000 0.900000 ( 0.902166)
>> scan: 5.630000 0.010000 5.640000 ( 5.630990)
你可以看到一對夫婦的模式都沒有捕捉「_」,這是部分\w
,結果不符合OP的要求。
=> '^/how/now#(Brown) Cow'.gsub /\W/, '' # or /[\W_]/
=> "hownowBrownCow"
...基於評論更新中...
HNBC的+1。 :) – 2011-01-10 19:54:19
不刪除下劃線,這可能是一件好事。 – steenslag 2011-01-10 20:36:06
或者您可以使用`.gsub/\ W /,''`,因爲\ W匹配任何非單詞字符(而\ w匹配單詞字符)。 – 2011-01-10 20:42:43
沒有一個正則表達式:
garbage = 'ab_c<>?AB [email protected]#123'
puts garbage.delete("^a-zA-Z0-9") #=> abcABC123
其中 '^' 後,它否定了一切。
- 1. 刪除字符串中除數字之外的所有內容
- 2. 如何從字符串中刪除所有字母字符?
- 3. 從字符串中移除除az之外的所有字符
- 4. 如何刪除字符串中的字符(和)之間的所有字母?
- 5. 刪除字符串中的所有字符但字母
- 6. 刪除字母之前的字符串
- 7. 從字符串中刪除所有非字母,非數字字符?
- 8. 從lua字符串中刪除所有非字母數字字符
- 9. 從字符串中刪除非字母數字字符
- 10. C#正則表達式去除字符串中除字母和數字之外的所有字符?
- 11. 刪除空格以外的所有字母數字字符?
- 12. 從字符串中刪除除尾0之外的所有0
- 13. 刪除括號額外的字母和數字的字符串
- 14. Python從字符串中刪除字母
- 15. 從字符串中刪除字母
- 16. 從字符串中刪除字母
- 17. 刪除字符串中與數字和字母不同的所有符號
- 18. 所有非字母數字字符串除外的java字符串
- 19. 刪除除字母數字和空格外的所有字符使用javascript
- 20. 從字符串中刪除字母字符和空格
- 21. 如何從字符串[]中刪除沒有字母字符?
- 22. 刪除所有字母和逗號從字符串
- 23. 如何從Java中的字符串中刪除所有非字母字符?
- 24. 刪除字符串中的所有特殊字符 - ruby
- 25. Ruby - 刪除字符串中的所有其他字符
- 26. 如何從字符串中刪除所有字母
- 27. 如何從字符串中刪除所有非字母(所有語言)和非數字字符?
- 28. 刪除字符串中的字母
- 29. 刪除字符串jquery中的所有非數字字符?
- 30. 刪除字符串中的所有數字字符DAX
爲了幫助您的旅程:http://www.rubular.com/ – apneadiving 2011-01-10 19:51:15