Ruby:在循环中撤消特殊符号

时间:2013-03-27 19:13:15

标签: ruby-on-rails escaping

我想这样做:

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"

1 个答案:

答案 0 :(得分:2)

遗憾的是,这并不是一种“好”的方式。需要这种情况的正常情况是解码像AJAX这样的传输格式,但这些库本身只实现了正确的映射,因此您很少需要在自己的代码中使用它。你有两个选择:

  1. 自己写出映射,就像在原始代码中一样。你可以做的一件事就是让它更具可读性,就是创建一个字典并循环遍历而不是链接gsubs。

  2. 使用eval创建字符串。例如:

    c = 'n'
    newline = eval "\"\\#{c}\""