在Ruby中避免和解除字符串的最佳方式?

Ruby是否有任何内置方法来转义和取消转义字符串?过去,我使用正则表达式;然而,对我来说,Ruby可能内部所有这样的转换。也许这个功能暴露在某个地方。

到目前为止,我已经提出了这些功能。他们工作,但他们似乎有点黑客:

def escape(s)
  s.inspect[1..-2]
end

def unescape(s)
  eval %Q{"#{s}"}
end

有没有更好的办法?

如果您不想使用eval,但是愿意使用YAML模块,可以使用它:

require 'yaml'

def unescape(s)
  YAML.load(%Q(---\n"#{s}"\n))
end

YAML对eval的优势在于它可能更安全。甘蔗不允许所有使用eval。我已经看到建议使用$ SAFE和eval,但是目前不能通过JRuby使用。

对于什么是值得的,Python确实有unescaping backslashes的本机支持。

http://stackoverflow.com/questions/8639642/best-way-to-escape-and-unescape-strings-in-ruby

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:在Ruby中避免和解除字符串的最佳方式?