在ruby字符串中正确使用gsub
我有这样的表达:在ruby字符串中正确使用gsub,ruby,string,gsub,Ruby,String,Gsub,我有这样的表达: channelName = rhash["Channel"].gsub("'", " ") 它很好用。但是,我只能用它替换1个字符。我想再添加几个字符来替换。因此,我尝试了以下方法: channelName = rhash["Channel"].gsub(/[':;] /, " ") 这不起作用,即没有对字符串进行替换,也没有错误消息。我也试过: channelName = rhash["Channel"].gsub!("'", " ") 这将导致一个空白字符串。所以绝对
channelName = rhash["Channel"].gsub("'", " ")
它很好用。但是,我只能用它替换1个字符。我想再添加几个字符来替换。因此,我尝试了以下方法:
channelName = rhash["Channel"].gsub(/[':;] /, " ")
这不起作用,即没有对字符串进行替换,也没有错误消息。我也试过:
channelName = rhash["Channel"].gsub!("'", " ")
这将导致一个空白字符串。所以绝对不是我想要的
我希望使用gsub方法将以下字符替换为字符串中的空格:
' ; :
我的问题是:
你的第二次尝试非常接近。问题是您在右括号后留下了一个空格,这意味着它只是在查找这些符号中的一个,后面跟着一个空格 试试这个:
channelName = rhash["Channel"].gsub(/[':;]/, " ")
这并不能回答你的问题,但却是一个更好的方法
channelName = rhash["Channel"].tr("':;", " ")
空格在正则表达式中非常重要…@meagar,除非您使用
x
选项,对吗?为什么不用于像这样简单的事情?@muistooshort真棒,谢谢。是的,我甚至没有看那个方法。这就是为什么我喜欢这样,总是有一种新的解决问题的方法需要学习。。。。。。。谢谢我试试看。一个简单的问题。“tr”方法比gsub更有效吗?tr
可能比gsub
更快,但是(a)regex引擎可以惊人地快,(b)差异可能与所有实际目的无关,以及(c)您可以随时看到。与此答案相同。还有,string.gsub!(“,”)
如果未执行替换,则将返回nil,因此您可能会看到rhash[“Channel”]=nil
。请参阅:@jslivka感谢您的澄清+1。我想知道为什么会这样。