簡體   English   中英

從文件解析字符串時刪除轉義字符

[英]removing escape characters when parsing a string from file

我正在嘗試從文件中讀取一個字符串,該字符串將插值代碼中定義的變量,並替換這些變量的字符串值。

文本文件:

my name is #{name}

編碼:

file = File.open("tesst.txt", "r")
arr = []
name = "CDJ"
file.each_line.with_index { |line, index|
  puts line
}
file.close

所需的輸出:

My name is CDJ

實際輸出:

My name is #{name}

當輸出為line.inspect時:

"My name is \#{name}"

誰能幫助我正確設置此字符串的格式,以便它將#{name}讀取為變量,而不是帶有插入的轉義字符的字符串?

file= 'tesst.txt'
name = 'CDJ'

File.readlines(file).each do |line|
  eval("puts \"#{line}\"")
end

考慮一下:

class Template
  def initialize(source: DATA)
    @text = source.read.chomp.split("\n")
  end

  def render(locals: {})
    locals.each do |key, value|
      instance_variable_set("@#{key}", value)
      self.class.send(:attr_reader, key)
    end

    @text
      .map { |line| eval("\"#{line}\"") }
      .join("\n")
  end
end

puts Template
  .new(source: File.open('./tesst.txt', 'r'))
  .render(locals: {name: 'George', age: 29})

__END__
my name is #{name}
I am #{age} years old

注意事項

  1. 可以通過散列提供變量。
  2. __END__之后,可以使用DATA切換File以從文件底部讀取內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM