如何在Ruby中删除所有不是单词字符(a-z,任何数字)的字符串,用空格替换它们?
例如,对于字符串“not-using-social-media”,我想将其删除为“不使用社交媒体”
对于字符串“16令人惊讶的小企业统计(信息图表)”,我想将其删除为“16令人惊讶的小企业统计信息图”
答案 0 :(得分:4)
这不使用正则表达式。它用空格替换“a-zA-Z0-9”中不的所有内容,然后将空格的运行挤压到一个空格并删除尾随和尾随空格。
str = "not-using-social-media 16 Surprising Small Business Statistics (Infographic)"
p str.tr("^a-zA-Z0-9 ", " ").squeeze(" ").strip
#=>"not using social media 16 Surprising Small Business Statistics Infographic"
答案 1 :(得分:1)
我会这样做:
phrase = '16 Surprising Small Business Statistics (Infographic)'
p phrase.gsub(/[^a-zA-Z0-9]+/, ' ').strip
#=> "16 Surprising Small Business Statistics Infographic"
p phrase.gsub(/[^[:alnum:]]+/, ' ').strip
#=> "16 Surprising Small Business Statistics Infographic"
几点说明:
+
,以便用一个空格替换连续的非字母数字字符。.strip
。\w
,因为它也会包含下划线。答案 2 :(得分:0)
正则表达式是你的朋友 - http://www.ruby-doc.org/core-1.9.3/Regexp.html
这是你想要的括号表达式 - / [[:alpha:]] /
答案 3 :(得分:0)
最简单的解决方案就是使用delete('^')
。
它会删除^
之后的所有内容。
a='hello-world+'
a.delete('^A-Za-z') #=> 'helloworld'
a='Hello +World'
a.delete('^A-Za-z ') #=> 'Hello World'
a='01234 ABC'
a.delete('^0-9') #=> '01234'