在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方法将以下字符替换为字符串中的空格:

 ' ; :
我的问题是:

  • 如何构造我的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。我想知道为什么会这样。