ruby - 如何使用 String.delete 从 Ruby 中的字符串中删除 '<em>'?

标签 ruby

我确定我可以使用正则表达式来做到这一点,但我无法使用普通 delete! 找到对此行为的任何解释。 :

#1.9.2
>> "helllom<em>".delete!"<em>"  
=> "hlllo"

The docs对此无话可说。在我看来,它正在治疗'<em>'作为一套。这在哪里记录?

编辑:在我的辩护中,我在删除的文档中寻找 < 和 > 的特殊处理。没有看到任何关于它的信息并尝试了谷歌,谷歌也没有任何关于它的说法——因为它不存在。

最佳答案

String#delete 是那些难以解释的不幸方法之一(我不知道用例是什么)。在实践中,我总是使用带有空字符串的 gsub 作为第二个参数。

'helllom<em>'.gsub '<em>', '' # => "helllom"

请注意 String#gsub! 也有一些奇怪的地方,你不应该依赖它的返回值,如果它不改变字符串,它将返回 nil,所以最好使用 gsub 如果你依赖于返回值,或者如果你想改变字符串,那么使用 gsub! 但不要使用任何其他东西那条线。

关于ruby - 如何使用 String.delete 从 Ruby 中的字符串中删除 '<em>'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9074933/

相关文章:

ruby-on-rails - 如何查找与给定条件没有关联的记录? (事件记录/PostgreSQL)

ruby-on-rails - 学习 Ruby on Rails

ruby-on-rails - 每个类别 Rails 的不同注册模型

ruby - 如果没有 arg,则针对 stdin 运行的脚本;否则输入文件=ARGV[0]

ruby - 无法通过 Homebrew 安装 Ruby,权限被拒绝错误

ruby-on-rails - 如何更新 Ruby 中的引用列

ruby-on-rails - Sidekiq:perform_async 中的参数数量错误(4 对 3)错误

ruby - Rails 3 渲染/部分

ruby-on-rails - before_filter 在 state_machine :( 中不工作

arrays - 如何在 Ruby 的 Array 类中对数组的每个元素进行平方?