3

我目前从 ruby​​ 开始,在我的课程作业中,它被要求操纵字符串,这引发了一个问题。

给定一个字符串链接:

I'm the janitor, that's what I am!

任务是从字符串中删除除字符之外的所有内容,以便结果为

IamthejanitorthatswhatIam

实现这一目标的一种方法是

"I'm the janitor, that's what I am!".gsub(" ", "").gsub(",","").gsub("'","").gsub("!","")

这可行,但看起来很笨拙。处理此任务的另一种方法可能是正则表达式。有没有更“红宝石”的方式来实现这一目标?

提前致谢

4

1 回答 1

4

在 中使用正则表达式而不是字符串.gsub,例如/\W/匹配非单词字符:

ruby-1.9.3-p194 :001 > x = "I'm the janitor, that's what I am!"
 => "I'm the janitor, that's what I am!" 

ruby-1.9.3-p194 :002 > x.gsub(/\W/, '')
 => "ImthejanitorthatswhatIam" 

正如@nhahtdh 指出的那样,这包括数字和下划线。

无需这样做即可完成此任务的正则表达式是/[^a-zA-Z]/

ruby-1.9.3-p194 :001 > x = "I'm the janitor, that's what I am!"
 => "I'm the janitor, that's what I am!" 

ruby-1.9.3-p194 :003 > x.gsub(/[^a-zA-Z]/, "")
 => "ImthejanitorthatswhatIam" 
于 2012-10-04T01:33:29.357 回答