Ruby怎么创建变量名称的正则表达式?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

是否可以根据变量名的值在ruby中创建/使用正则表达式?

例如:

str = "my string"
str2 = "This is #{str}" # => "This is my string"

我想这样:

var = "Value"
str = "a test Value"
str.gsub( /#{var}/, 'foo' ) # => "a test foo"

提问于
用户回答回答于

你觉得不行的代码:

var = "Value"
str = "a test Value"
p str.gsub( /#{var}/, 'foo' )   # => "a test foo"

而你需要这么改一改:

var = "Value|a|test"
str = "a test Value"
str.gsub( /#{var}/, 'foo' ) # => "foo foo foo"

如果搜索字符串包含元字符,则需要不把它们解释为元字符:

var = "*This*"
str = "*This* is a string"
p str.gsub( /#{Regexp.escape(var)}/, 'foo' )
# => "foo is a string"

用户回答回答于

它能用,但你需要用gsub!

var = "Value"
str = "a test Value"
str.gsub!( /#{var}/, 'foo' )  # Or this: new_str = str.gsub( /#{var}/, 'foo' )
puts str

扫码关注云+社区