ruby - 如何实现! ruby 中的样式方法

标签 ruby string

在 Ruby 中,我们有类似 string.upcase 的方法,它返回一个新的字符串和 string.upcase!它修改了调用它的字符串。

我想知道如何编写自己的 !方法的版本。

我正在编写一个在两个字符之间搜索字符串的方法。我希望它修改字符串以等于新字符串。

如何做到这一点。 (我有找到新字符串的方法只需要知道如何修改调用者)

回答

class String
  def find_between(marker_one , marker_two)
    self[/#{Regexp.escape(marker_one)}(.*?)# {Regexp.escape(marker_two)}/m, 1]
  end

  def find_between!(marker_one , marker_two)
    self.replace(find_between(marker_one, marker_two))
  end
end

最后 self.replace 是需要的

最佳答案

就像一个普通的方法:

def mathod_name!
  # whatever
end

然而,惯例是,只有当您有同名方法的“正常” 版本并且此版本在某种程度上“危险”.

您可以使用 String#[]= 就地修改字符串。

关于ruby - 如何实现! ruby 中的样式方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40931191/

相关文章:

ruby-on-rails - 当我尝试执行 bundle install Nokogiri 时出现 Bundler 错误

将字符串与字母进行比较,参数不兼容

python - 如何将可变数量的参数格式化为字符串?

c++ - 将字符串转换为数组,strcpy 不起作用

mysql - 带有 xampp + rails + mysql2 gem 的 OS X Lion

ruby-on-rails - ActiveRecord::Base:Class 的未定义方法 `migration_error='

ruby - 在 Ruby 中转到 channel

javascript - 如何检查字符串是否包含字符和空格,而不仅仅是空格?

c - 字符串格式、strtok 问题

ruby - 在 Ruby 中是否有等同于 F# |> (方法链接)的东西?