使用Regex将变量插入字符串 - Ruby

时间:2014-01-26 04:17:11

标签: ruby regex string

我在使用正则表达式将外部变量插入字符串时遇到了麻烦。

我有一个看起来像的字符串:

    string = "7  -"

我想在“7”和“ - ”之间的空格中插入一个整数作为字符串,我尝试使用插值,如下所示:

    variable = "15"
    string = string.gsub(/(\S?\d+)(\s)(\s)(\D)/, '\1\2#{variable}\3\4')

(\ S?表示附加到数字上的任何“ - ”,无论是正数还是负数)

输出是一个如下所示的字符串:

    "7 \#{variable} -"

但我希望输出看起来像这样:

    "7 15 -"

2 个答案:

答案 0 :(得分:1)

这是您问题的优雅解决方案:

s = "7  -"
v = 15
string = s.gsub(/\d\s/, "#{s.delete("-").strip} #{v}")
#=> "7 15 -"

答案 1 :(得分:0)

使用双引号。单引号字符串不进行插值。

string = "7  -"
variable = "15"
string = string.gsub(/(\S?\d+)(\s)(\s)(\D)/, "\\1\\2#{variable}\\3\\4")
string # => "7 15 -"