我想这样做:
text.gsub('\a', "\a").gsub('\b', "\b")......gsub('\n', "\n").....gsub('\t', "\t")......gsub('\z', "\z")
我来到这段代码:
('a'..'z').each { |sym| text.gsub!("\\#{sym}", "\#{sym}") }
但问题是我无法在"\#{sym}"
或"\n"
生成"\t"
。
答案 0 :(得分:2)
遗憾的是,这并不是一种“好”的方式。需要这种情况的正常情况是解码像AJAX这样的传输格式,但这些库本身只实现了正确的映射,因此您很少需要在自己的代码中使用它。你有两个选择:
自己写出映射,就像在原始代码中一样。你可以做的一件事就是让它更具可读性,就是创建一个字典并循环遍历而不是链接gsubs。
使用eval
创建字符串。例如:
c = 'n'
newline = eval "\"\\#{c}\""