【问题标题】:Porting Perl string substitution to Ruby?将 Perl 字符串替换移植到 Ruby?
【发布时间】:2013-02-22 21:46:18
【问题描述】:

在将 Perl 脚本移植到 Ruby 的过程中,我试图弄清楚如何进行字符串替换。

这是 Perl 行。我正在尝试找出 Ruby 的等价物:

$historyURL =~ s/COMPONENT_NAME/$componentName/g;

对于那些可能了解 Ruby 但不了解 Perl 的人,这一行基本上将 $historyVariable 中的字符串“COMPONENT_NAME”替换为 $componentName 变量的值。

【问题讨论】:

  • 我很好奇为什么这个问题被否决了,这对我来说似乎是一个完全合理的问题,我无法通过自己查看 Ruby 的 API 来解决(由于我缺乏经验一般用正则表达式)

标签: ruby regex string-substitution


【解决方案1】:

等价的很简单:

history_url.gsub!(/COMPONENT_NAME/, component_name)

gsub! 方法用第二个参数替换给定模式的 所有 实例,并将结果存储在原始变量中,因为它是一个就地修饰符。 gsub 通过比较返回修改后的副本。

【讨论】:

  • =~ 运算符存在于 Ruby 中,但不能像在 Perl 中那样用于进行修改。但是,为了清楚起见,通常不使用它,而是使用match 或各种sub 方法。
【解决方案2】:

gsub-方法的好处是它不需要正则表达式,它可以很好地处理字符串(或指向字符串的变量):

history_url = "some random text COMPONENT_NAME random text COMPONENT_NAME"
component_name = "lemonade"
p history_url.gsub("COMPONENT_NAME", component_name) # no regex
#=> "some random text lemonade random text lemonade"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2011-12-29
    相关资源
    最近更新 更多