1

如何在 Ruby 中去除所有不是单词字符(az,任何数字)的字符串,用空白替换它们?

例如,对于字符串“不使用社交媒体”,我想将其剥离为“不使用社交媒体”

对于字符串“16 Surprising Small Business Statistics (Infographic)”,我想将其剥离为“16 Surprising Small Business Statistics Infographic”

4

4 回答 4

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"
于 2013-11-04T22:34:51.537 回答
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,因为它还包括下划线。
于 2013-11-04T22:28:00.657 回答
1

最简单的解决方案是简单地使用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'
于 2013-11-05T04:05:11.967 回答
0

正则表达式是你的朋友 - http://www.ruby-doc.org/core-1.9.3/Regexp.html

这是您想要的括号表达式 - /[[:alpha:]]/

于 2013-11-04T22:20:18.123 回答