的部分我有这个字符串红宝石更换字符串
s = "03:23 PM on 09/04/12"
我想带出“开”并且只是一个空间“ ”代替它。我认为字符串的gsub方法和正则表达式是最好的解决方案。我只是不知道为什么这不会工作。
s ="03:23 PM on 09/04/12"
s.gsub(/ on /, ' ')
puts s
#=> "03:23 PM on 09/04/12"
的部分我有这个字符串红宝石更换字符串
s = "03:23 PM on 09/04/12"
我想带出“开”并且只是一个空间“ ”代替它。我认为字符串的gsub方法和正则表达式是最好的解决方案。我只是不知道为什么这不会工作。
s ="03:23 PM on 09/04/12"
s.gsub(/ on /, ' ')
puts s
#=> "03:23 PM on 09/04/12"
的字符串的方法gsub
返回的修改后的字符串,独自离开对象的字符串。如果你想修改对象,那么你必须使用gsub!
。
此外,如果您只想更改一次匹配,那么sub
可能是您最好的选择。
所以
s = "03:23 PM on 09/04/12"
s = s.sub(' on ', ' ')
或
s.sub!(' on', ' ')
'sub',因为它改变了第一次出现,在处理长字符串时比'gsub'快得多。 'sub'会立即退出,'gsub'会扫描剩余的字符串以替换添加目标。 –
@theTinMan:公平的说,这个优点不太可能是重要的,特别是对于二十个字符的字符串。 – Borodin
正如我所说,特别是在处理很多字符串时,它会影响长字符串。 –
工作正常,我......也许你想用gsub!
?
>> s ="03:23 PM on 09/04/12"
=> "03:23 PM on 09/04/12"
>> s.gsub(/ on /, ' ')
=> "03:23 PM 09/04/12"
>> s.gsub!(/ on /, ' ')
=> "03:23 PM 09/04/12"
>> s
=> "03:23 PM 09/04/12"
s ="03:23 PM on 09/04/12"
s.gsub(' on ', ' ')
#>> "03:23 PM 09/04/12"
您可以在不regex
去在这种情况下,但如果你想使用regex
,然后用s.gsub!(/ on /, ' ')
使用RegExp对象的GSUB参数,则不需要(/ on /
)你也可以使用一个字符串 - 这对我有用!
s = "03:23 PM on 09/04/12"
p s.gsub " on ", " "
#=> "03:23 PM 09/04/12"
'gsub'返回字符串改变,'GSUB!'会产生变异到位的字符串。 – thomasfedb