В Ruby можно ли выполнить строковую интерполяцию на данных, считанных из файла?

31
задан Andrew Grimm 27 July 2011 в 23:31
поделиться

3 ответа

Вместо интерполяции Вы могли использовать erb . Этот блог дает простой пример использования ERB,

require 'erb'
name = "Rasmus"
template_string = "My name is <%= name %>"
template = ERB.new template_string
puts template.result # prints "My name is Rasmus"

Kernel#eval мог использоваться, также. Но большую часть времени Вы хотите использовать простую шаблонную систему как erb.

19
ответ дан 27 November 2019 в 21:34
поделиться

Ну, я ответ второго stesch использования erb в этой ситуации. Но можно использовать оценку как это. Если data.txt имеет содержание:

he #{foo} he

Затем можно загрузить и интерполировать как это:

str = File.read("data.txt")
foo = 3
result = eval("\"" + str + "\"")

И result будет:

"he 3 he"
22
ответ дан 27 November 2019 в 21:34
поделиться

2 самых очевидных ответа были уже даны, но если они не делают к нему по некоторым причинам, существует оператор формата:

>> x = 1
=> 1
>> File.read('temp') % ["#{x}", 'saddle']
=> "The number of horses is 1, where each horse has a saddle\n"

, где вместо # {} волшебство у Вас есть более старое (но испытанный) %s волшебство...

6
ответ дан 27 November 2019 в 21:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: