我有一个包含字符串的变量,在运行时我要替换存储在该字符串中的一些变量.
例如..
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)
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)