试图改变这一点:这个剥离非字母数字字符,但留下空间
"The basketball-player is great! (Kobe Bryant)"
:
"the basketball player is great kobe bryant"
想downcase并删除所有标点符号,而且留有空格...
尝试string.downcase.gsub(/[^a-z ]/, '')
但它删除空格
试图改变这一点:这个剥离非字母数字字符,但留下空间
"The basketball-player is great! (Kobe Bryant)"
:
"the basketball player is great kobe bryant"
想downcase并删除所有标点符号,而且留有空格...
尝试string.downcase.gsub(/[^a-z ]/, '')
但它删除空格
您可以简单地添加\s
(空格)
string.downcase.gsub(/[^a-z0-9\s]/i, '')
你摇滚!优雅和简单。谢谢:) – 2013-06-11 17:44:07
注意:这会去掉数字。 – DrewB 2014-04-07 22:04:15
这使得'篮球运动员'变成'篮球运动员' – 2014-05-11 05:06:21
一些细微的解决方案,但最简单的往往是最好的:
string.downcase.gsub /\W+/, ' '
如果你想赶上非拉丁字符,太:
str = "The basketball-player is great! (Kobe Bryant) (ひらがな)"
str.downcase.gsub(/[^[:word:]\s]/, '')
#=> "the basketballplayer is great kobe bryant ひらがな"
所有其他答案带出号为好。这适用于给出的例子,但并没有真正回答如何去除非字母数字的问题。
string.downcase.gsub(/[^\w\s\d]/, '')
你应该用空格替换连字符吗? – 2012-04-09 12:44:06