在 File.write 中使用变量
Use variable in File.write
我一直在使用以下方法将内容附加到文件。
File.write(file, 'something', mode: 'a') # In case of plain text
File.write(file, myvar, mode: 'a') # In case of variables
我有以下三个要求。
同时使用纯文本和变量
File.write(file, mytext1=var1, mode: 'a')
使用纯文本和变量的组合
File.write(file, mytext1=var1, mytext2=var2, mode: 'a')
同时使用多个变量
File.write(file, var1, var2, var3, mode: 'a')
这些代码无效。
以上3点中,mytext1和mytext2是明文,可以是DNS1和DNS2。
var1、var2 和 var3 是变量,比如 192.168.1.10、192.168.1.11 和 192.168.1.12。
我可以通过删除行、添加字符串并用 gsub
替换字符串(其中变量有效)来实现此目的,但我想知道是否有更短的方法来使用 File.write
.
您可以使用 IO#puts
作为
File.open(file_path, 'a') do |file|
file.puts [var1, "your text", var2] # or puts var1, "your text", var2
end
#puts
的文档是:
Writes the given objects to ios as with IO#prin
t. Writes a record separator (typically a newline) after any that do not already end with a newline sequence. If called with an array argument, writes each element on a new line. If called without arguments, outputs a single record separator.
或者,您可以使用 File::write
:
content = [var1, var2, var3].join("\n")
File.write(file, content, mode: 'a')
content = ["mytext1=#{var1}", "mytext2=#{var2}"].join("\n")
File.write(file, content, mode: 'a')
在 Arup Rakshit 的帮助下,我找到了两个简单的解决方案。
# using puts
File.open(file, 'a') do |j|
j.puts "DNS1=\"#{ip}\"";
end
# Using File.write
content = ("#{var1}\t#{var2}\t#{var3}\n")
File.write(file, content, mode: 'a')
我一直在使用以下方法将内容附加到文件。
File.write(file, 'something', mode: 'a') # In case of plain text
File.write(file, myvar, mode: 'a') # In case of variables
我有以下三个要求。
同时使用纯文本和变量
File.write(file, mytext1=var1, mode: 'a')
使用纯文本和变量的组合
File.write(file, mytext1=var1, mytext2=var2, mode: 'a')
同时使用多个变量
File.write(file, var1, var2, var3, mode: 'a')
这些代码无效。
以上3点中,mytext1和mytext2是明文,可以是DNS1和DNS2。 var1、var2 和 var3 是变量,比如 192.168.1.10、192.168.1.11 和 192.168.1.12。
我可以通过删除行、添加字符串并用 gsub
替换字符串(其中变量有效)来实现此目的,但我想知道是否有更短的方法来使用 File.write
.
您可以使用 IO#puts
作为
File.open(file_path, 'a') do |file|
file.puts [var1, "your text", var2] # or puts var1, "your text", var2
end
#puts
的文档是:
Writes the given objects to ios as with
IO#prin
t. Writes a record separator (typically a newline) after any that do not already end with a newline sequence. If called with an array argument, writes each element on a new line. If called without arguments, outputs a single record separator.
或者,您可以使用 File::write
:
content = [var1, var2, var3].join("\n")
File.write(file, content, mode: 'a')
content = ["mytext1=#{var1}", "mytext2=#{var2}"].join("\n")
File.write(file, content, mode: 'a')
在 Arup Rakshit 的帮助下,我找到了两个简单的解决方案。
# using puts
File.open(file, 'a') do |j|
j.puts "DNS1=\"#{ip}\"";
end
# Using File.write
content = ("#{var1}\t#{var2}\t#{var3}\n")
File.write(file, content, mode: 'a')