# Author: sholmes
puts '--- 1 ---'
# まず、Ruby1.9系ではリテラルが用意されているようです。
# \から始める形式であれば、そのままダブルクオートしてやればOKでしょう
puts "\u3053\u3060\u308F"
# シングルだと無視されるのは、\nとかと同じですね
puts '\u3053\u3060\u308F'
puts '--- 2 ---'
# 表記上の解釈結果であるため、コード上直接書かずにどっかから持ってきたデータには注意が必要です。
ARGF.each do |line|
# この三つは無効
puts line
puts "#{line}"
puts "\"#{line}\""
# このように認識させて、初めて有効となります。
puts eval("\"#{line}\"")
end
puts '--- 3 ---'
# %でエスケープ?する形式には対応していないようです。
puts "%u3053%u3060%u308F"
# この%から始める記法がどういった場面で用いられるのかは分からないのですが、必要であれば都度置換する感じでしょうか
# ついでなので、%の場合は\に変換した上で、文字列からこのエスケープ理解を可能にするメソッドを定義してみます。
# とはいえ、こうやってeval使うぐらいだったら自力解析のほうが良いかもしれません
class String
def ues
eval("\"#{gsub(/(%)(u[\da-f]{4})/i){"\\#{$2}"}}\"")
end
end
puts '--- Summary ---'
# 無効
puts '\u3053\u3060\u308F'
# 有効
puts "\u3053\u3060\u308F"
# 有効
puts '\u3053\u3060\u308F'.ues
# 無効
puts "%u3053%u3060%u308F"
# 有効
puts '%u3053%u3060%u308F'.ues
# 難点としては、evalかけると他のエスケープまで解釈されてしまう事でしょうか・・・
puts '%u3053%u3060\t%u308F'.ues