试图改变这个:
"The basketball-player is great! (Kobe Bryant)"
进入这个:
"the basketball player is great kobe bryant"
想要缩小并删除所有标点符号,但请留空格......
尝试string.downcase.gsub(/[^a-z ]/, '')
,但删除了空格
答案 0 :(得分:35)
您只需添加\s
(空白)
string.downcase.gsub(/[^a-z0-9\s]/i, '')
答案 1 :(得分:13)
如果你想要捕捉非拉丁字符:
str = "The basketball-player is great! (Kobe Bryant) (ひらがな)"
str.downcase.gsub(/[^[:word:]\s]/, '')
#=> "the basketballplayer is great kobe bryant ひらがな"
答案 2 :(得分:9)
一些很好的解决方案,但最简单的通常是最好的:
string.downcase.gsub /\W+/, ' '
答案 3 :(得分:4)
所有其他答案也会删除数字。这适用于给出的示例,但并没有真正回答如何删除非字母数字的问题。
string.downcase.gsub(/[^\w\s\d]/, '')
答案 4 :(得分:1)
a.downcase.gsub(/[^a-z ]/, "")
请注意我在a-z之后添加的空格。 此外,如果你想要替换所有空格(不仅仅是gmalette建议的空间使用)。
答案 5 :(得分:0)
所有先前的答案都使篮球运动员成为了篮球运动员,或者完全删除了数字,这并非完全必要。
以下代码完全符合您的要求:
text.downcase
.gsub(/[^[:word:]\s]/, ' ') # Replace sequences of non-alphanumerical chars by a single space
希望这对某人有帮助!