尝试更改这个:
"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, '')
basketball-player
转换为 basketballplayer
。 - Sarp Kaya/i
,因为我们已经将其转换为小写了,对吧? - Eli Rosedowncase
才能使其工作,对吗? - Joshua Pinterdowncase
,但这可能不是你的情况。如果你不需要 downcase
,你可能需要调整正则表达式以允许大写字符。 - gmalette如果您想同时捕获非拉丁字符:
str = "The basketball-player is great! (Kobe Bryant) (ひらがな)"
str.downcase.gsub(/[^[:word:]\s]/, '')
#=> "the basketballplayer is great kobe bryant ひらがな"
一些很好的解决方案,但通常最简单的方法是最好的:
string.downcase.gsub /\W+/, ' '
string.downcase.gsub(/[^\w\s]/, '')
string.downcase.gsub(/[^a-zA-Z\s\d]/, '')
\w
已经包括了数字,所以在这个正则表达式中可以省略 \d
。 - Dave Powerstext.downcase
.gsub(/[^[:word:]\s]/, ' ') # Replace sequences of non-alphanumerical chars by a single space
a.downcase.gsub(/[^a-z\s]/, "")
注意我在a-z后面添加了空格。如果你想替换所有空格(不仅仅是空格),可以使用gmalette建议的\s。
a.downcase.delete('^a-z ')
是一种替代方法。 - steenslag