【问题标题】:Ruby Regexp using gsub is there an equivalent to self keyword?使用 gsub 的 Ruby Regexp 是否有等效于 self 关键字?
【发布时间】:2013-12-09 14:15:56
【问题描述】:

例如,假设我想获取一个字符串并为每个 a-z 字符添加 1 个值。我正在寻找具有类似语法的东西:

str = 'abc123'
str.gsub(/[a-z]/, self.next!)

给出输出:bcd123 我知道我可以使用如下代码:

irb(main):075:0> 'abc123'.split('').map{|x| if x =~ /[a-z]/ then x.next! else x = x end }.join
=> "bcd123"

但是,这似乎很草率而且效率不高。我想有一个更简洁的方法来完成同样的壮举。

提前致谢。

【问题讨论】:

    标签: ruby regex arrays string self


    【解决方案1】:

    String#gsub 接受可选块。块的返回值用作替换字符串。

    str.gsub(/[a-z]/) { |x| x.next }
    # => "bcd123"
    

    使用&:next 语法的较短版本:

    str.gsub(/[a-z]/, &:next)
    # => "bcd123"
    

    【讨论】:

    • 我们将尽快接受答复。感谢您的洞察力。我无法相信红宝石可以如此简单和优雅。我倾向于把事情复杂化。
    猜你喜欢
    • 2011-03-13
    • 2019-11-09
    • 2011-10-03
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多