【问题标题】:Reverse of Ruby String#dump methodRuby String#dump 方法的反转
【发布时间】:2016-04-15 09:55:18
【问题描述】:

在 Ruby 中,我需要让用户编辑一段文本。必须使用\n\t 等格式序列在一行中编辑文本,而不是制表符和回车。我将阅读此文本(使用Readline,带有自动完成功能),解释它,检查并可能让用户再次更正它。

我可以使用String#dump 来获取格式字符转义的文本(例如,用于自动完成或提供它以进行更正)。但是当用户使用\n\t 等(也许还有 \somethingInUnicode)提供他的输入时,我如何“取消转储”它——让 Ruby 解释它能够使用@987654327 生成的所有 eascapes @方法?

有没有 Ruby 方法可以做到这一点?如果不是,我必须亲自trgsub 或使用eval(糟糕!)...

【问题讨论】:

  • 我认为dump 根本不是一个好方法。例如,如果我输入“I ❤ Ruby\n”,我不会在处理后看到“I \u{2764} Ruby\n”。我会定义允许的序列并手动来回转换它们。甚至我每天使用的报价也会被dump 破坏:自己尝试"“Quote”".dump
  • 我可以使用转储或检查,但“定义允许的序列并手动来回转换”是没有问题的。正如您在我的问题末尾看到的那样,“手册”是我绝对想要避免的。顺便说一句,对于我的用例 \u{2764} 并不是一件坏事!
  • “对于我的用例\u{2764} 不是坏事”或者?您正在创建另一个应用程序,让我疯狂地回到 1995 年?我正在洗手。
  • 我需要针对特定​​情况的特定解决方案。你不需要了解我的动机,也没有理由提出来。如果您不知道解决方案,请忘记它,让我们免于恶毒的 cmets - 我也很擅长。
  • 我想知道String#dump是否是一个单射函数。如果是,那么 Ruby 缺少 String#undump。如果你使用eval,别忘了配置$SAFE

标签: ruby string escaping dump


【解决方案1】:

由于 ruby​​ 2.5.0 字符串具有 undump 方法:https://ruby-doc.org/core-2.5.0/String.html#method-i-undump

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-18
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多