【问题标题】:gsub! clean string, taking away apostrophegsub!干净的字符串,去掉撇号
【发布时间】:2016-06-22 19:22:59
【问题描述】:

试图删除字符串中的撇号。使用下面的代码,我删除了撇号和空格,谁能帮我修复它,所以我只是删除撇号?

def clean_uniname(text)
 return text.gsub!(/\s|"|'/, '')
end

【问题讨论】:

  • 撇号和单引号使用相同的符号,但含义不同。假设你的字符串是"She said, 'I don't know'"。您想获得"She said, 'I dont know'"(仅删除撇号)或"She said, I dont know"(删除符号"'")还是其他?如果是前者,那就有点棘手了,因为有些单词在最后一个字符之后有一个撇号(“bro'”,或者以“s”结尾的单词的所有格形式,例如“Chris' car”),有些单词有多个撇号(“couldn't've”)。

标签: ruby-on-rails ruby string gsub code-cleanup


【解决方案1】:

\s 表示“空白字符”," 表示引号。如果您不想在正则表达式中使用它们,请拉取它们。如需调试帮助,请尝试Rubular 进行测试。

这意味着您的代码应该是:

def clean_uniname(text)
  text.gsub!(/\s|"|'/, '')

  text
end

值得注意的是,如果未进行任何更改,gsub! 将返回 nil,因此如果您使用返回值,则此处需要显式返回 text

【讨论】:

    【解决方案2】:

    这应该可以解决问题:

        def clean_uniname(text)
         text.gsub!("'", '')
        end
    

    【讨论】:

    • 试过了,我收到了这个错误: testing.rb:41:in block in process_unis': undefined method []' for nil:NilClass (NoMethodError)
    • 该错误与您提到的问题无关,如下所示: 2.2.1 :001 > string = "I'm a string" => "I'm a string" 2.2. 1 :002 > string.gsub!("'", '') => "Im a string" 2.2.1 :003 > 如果您发布更多代码,我可以帮助您解决其他问题,但您最好打开一个新问题并标记我对此问题的回答,因为我的回答解决了您提出的问题。
    猜你喜欢
    • 2020-12-13
    • 2023-03-06
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多