剥离非字母数字字符但在Ruby中留空格

Rai*_*ter 18 ruby string

试图改变这个:

"The basketball-player is great! (Kobe Bryant)"
Run Code Online (Sandbox Code Playgroud)

进入这个:

"the basketball player is great kobe bryant"
Run Code Online (Sandbox Code Playgroud)

想要缩小并删除所有标点符号,但留下空格......

尝试string.downcase.gsub(/[^a-z ]/, '')但它删除了空格

gma*_*tte 36

你可以简单地添加\s(空格)

string.downcase.gsub(/[^a-z0-9\s]/i, '')

  • 这使得“篮球运动员”成为“篮球运动员” (2认同)

fl0*_*00r 13

如果你想捕捉非拉丁字符:

str = "The basketball-player is great! (Kobe Bryant) (????)"
str.downcase.gsub(/[^[:word:]\s]/, '')
#=> "the basketballplayer is great kobe bryant ????"
Run Code Online (Sandbox Code Playgroud)


pgu*_*rio 9

一些好的解决方案,但最简单的通常是最好的:

string.downcase.gsub /\W+/, ' '
Run Code Online (Sandbox Code Playgroud)


Dre*_*ewB 6

所有其他答案也删除了数字。这适用于给出的示例,但并没有真正回答如何去除非字母数字的问题

string.downcase.gsub(/[^\w\s]/, '')
Run Code Online (Sandbox Code Playgroud)

请注意,这不会去掉下划线。如果你需要,那么:

string.downcase.gsub(/[^a-zA-Z\s\d]/, '')
Run Code Online (Sandbox Code Playgroud)