用ruby字符串中的值替换变量,字符串本身是否存储在变量中?

Moh*_*ain 10 ruby string

我有一个包含字符串的变量,在运行时我要替换存储在该字符串中的一些变量.

例如..

 my_string = "Congrats you have joined groupName."
 groupName = "*Name of my group*"
  puts my_string
Run Code Online (Sandbox Code Playgroud)

输出: -

 "Congrats you have joined *name of the group*"
Run Code Online (Sandbox Code Playgroud)

问题是:

my_string = " Congrats you have joined #{groupName}" expects groupName already exists.. but in my case i have to define my_string before variable in it.
Run Code Online (Sandbox Code Playgroud)

解决方案1:

一种方法可以..字符串替换像使用gsub ..但这不是一个好...

PS:

我想要实现的目标.我们必须提供一些100条消息.我想在一个地方定义,只需在需要时替换一些变量.现在我想在application_controller中定义所有这些变量(100个),这样我就可以连接定义的每个变量(100个中的一个).并自动变量(在存储在这100个变量之一中的字符串中定义的变量). 这种语言很混乱..查看我上面解释的例子..

Nab*_*eet 25

或者你可以这样做:

2.0.0-p247 :034 > a = "I love my live, says %{who}"
 => "I love my live, says %{who}" 
2.0.0-p247 :035 > a % { :who => "me" }
 => "I love my live, says me" 
Run Code Online (Sandbox Code Playgroud)

  • 这就是 Ruby 如此酷的原因。如果有人好奇,这在 [Kernel#sprintf](http://ruby-doc.org/core-2.2.0/Kernel.html#method-i-sprintf) 文档(最后一个例子)中有记录。 (2认同)

Mic*_*ohl 12

您可以存储格式字符串:

my_string = "Congrats you have joined %s"
group_name = "My Group"
puts my_string % group_name # prints: Congrats you have joined My Group
Run Code Online (Sandbox Code Playgroud)

对于同一个字符串中的多个变量,您可以使用

my_string = "Congrats you have joined %s %s"
group_name = ['group1', 'group2']
puts my_string % ['group1', 'group2']  
Run Code Online (Sandbox Code Playgroud)

将导致: -

"Congrats you have joined group1 group2" 
Run Code Online (Sandbox Code Playgroud)