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