如果self.title.match(/(#{var1})/ i),这条线在ruby var1 =“”中意味着什么

时间:2013-06-27 08:17:14

标签: ruby

我是php开发人员,将ruby脚本转换为PHP,我无法在任何地方找到这种语法。请帮助我理解它的含义。

var1 = "" if self.title.match(/(#{var1})/i)

2 个答案:

答案 0 :(得分:1)

这意味着如果""匹配由self.title进行插值的正则表达式,它应返回空字符串#{var1}/i表示它不区分大小写。

答案 1 :(得分:1)

首先,

greeting = "Hello"
puts "#{greeting} world"

--output:--
Hello world

所以#{..}构造允许你将变量插入到字符串中 - 它比php的$ variable插入字符串更冗长,但这就是它的方式。在ruby中,您还可以将任意表达式插入到字符串中:

puts "1 + 2 = #{1+2}"

--output:--
1 + 2 = 3


def get_greeting
  "Goodbye"
end

puts "#{get_greeting} world"

--output:--
Goodbye world

以下是您的示例:

title = "HELLO"
var1 = "hello"

var1 = "" if title.match(/(#{var1})/i)
puts "--->#{var1}<--"

--output:--
---><--

......相当于:

title = "HELLO"
var1 = "hello"

if title.match(/(#{var1})/i)
  var1 = ""
end

puts "--->#{var1}<--"

--output:--
---><--

......相当于:

title = "HELLO"
var1 = "hello"

if title.match(/(hello)/i)
  var1 = ""
end

puts "--->#{var1}<--"

--output:--
---><--

请注意,您可以使用#{...}构造将变量插入到正则表达式中。