0

我想要做:

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"or "\t"

4

1 回答 1

2

不幸的是,没有“好”的方法来做到这一点。需要这个的正常情况是解码像 AJAX 这样的传输格式,但是这些库只是自己实现正确的映射,所以你很少在自己的代码中需要它。你有两个选择,真的:

  1. 像在原始代码中一样,自己写出映射。为了使其更具可读性,您可以做的一件事是创建一个字典并对其进行循环,而不是链接 gsub。

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

    c = 'n'
    newline = eval "\"\\#{c}\""
    
于 2013-03-27T19:33:42.673 回答