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

使用Regex-Ruby将变量插入字符串,ruby,regex,string,Ruby,Regex,String,我在使用正则表达式将外部变量插入字符串时遇到问题 我有一个字符串,看起来像: string = "7 -" 我想在“7”和“-”之间的空格中插入一个整数作为字符串,我尝试使用插值,如下所示: variable = "15" string = string.gsub(/(\S?\d+)(\s)(\s)(\D)/, '\1\2#{variable}\3\4') (S?用于说明数字后面的任何“-”是正还是负) 输出是如下所示的字符串: "7 \#{variable

我在使用正则表达式将外部变量插入字符串时遇到问题

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

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

    variable = "15"
    string = string.gsub(/(\S?\d+)(\s)(\s)(\D)/, '\1\2#{variable}\3\4')
(S?用于说明数字后面的任何“-”是正还是负)

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

    "7 \#{variable} -"
    "7 15 -"
但我希望输出如下所示:

    "7 \#{variable} -"
    "7 15 -"

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

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

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

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

很有魅力,谢谢!我只是在学习Ruby,通常使用双引号。大多数时候使用双引号是最佳做法吗?或者只是在处理正则表达式时?在这种情况下,删除和剥离如何工作?我一直很难跟上。
s.delete(“-”)。strip
是:
delete
正在删除连字符,
strip
正在删除
s
实例中的空白,如下所示:
s=“7-”
空格返回到这里的字符串:
…ip}\s#{v}
明白吗?