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"です"\t"

4

1 に答える 1

2

残念ながら、これを行うための「良い」方法はありません。これが必要になる通常のケースは、AJAX などのトランスポート フォーマットのデコードですが、これらのライブラリは正しいマッピング自体を実装するだけなので、独自のコードで必要になることはほとんどありません。実際には 2 つのオプションがあります。

  1. 元のコードで行ったように、マッピングを自分で記述します。読みやすくするためにできることの 1 つは、gsub をチェーンするのではなく、辞書を作成してループすることです。

  2. eval文字列を作成するために使用します。例えば:

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