如何在 Ruby 中去除所有不是单词字符(az,任何数字)的字符串,用空白替换它们?
例如,对于字符串“不使用社交媒体”,我想将其剥离为“不使用社交媒体”
对于字符串“16 Surprising Small Business Statistics (Infographic)”,我想将其剥离为“16 Surprising Small Business Statistics Infographic”
这不使用正则表达式。它用空格替换不在“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"
我会这样做:
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
,因为它还包括下划线。最简单的解决方案是简单地使用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'
正则表达式是你的朋友 - http://www.ruby-doc.org/core-1.9.3/Regexp.html
这是您想要的括号表达式 - /[[:alpha:]]/