ruby - 从字符串中删除括号

标签 ruby

def encode(string)
    string.unpack("B*").to_s.gsub("1", "b").to_s.gsub("0", "a")
end

puts encode("Michael")

输出是:["abaabbababbabaababbaaabbabbabaaaabbaaaababbaabababbbbaa"]

我累了一堆东西来删除括号。我知道 gsub 可能会起作用,但看起来不太好。我也确定有更好的方法。我厌倦了使用 .shift 没有运气。也累了。to_a.shift。 任何帮助将不胜感激。

最佳答案

“问题”是您要将数组转换为字符串。 unpack 的结果是返回一个数组,你在其中调用 to_s,所以你得到:

p "Michael".unpack("B*") # ["01001101011010010110001101101000011000010110010101101100"]
p "Michael".unpack("B*").to_s # "[\"01001101011010010110001101101000011000010110010101101100\"]"

您可以简单地获得第一个也是唯一一个结果,而无需应用到_s,并且您将能够进行所需的替换:

"Michael".unpack("B*").first.gsub("1", "b").to_s.gsub("0", "a")
# "abaabbababbabaababbaaabbabbabaaaabbaaaababbaabababbabbaa"

请注意,如果您只是将 0 替换为 a,将 1 替换为 b,您可以使用 tr:

p "Michael".unpack("B*").first.tr("01", "ab")
# "abaabbababbabaababbaaabbabbabaaaabbaaaababbaabababbabbaa"

同样的结果。

关于ruby - 从字符串中删除括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56086202/

相关文章:

ruby-on-rails - 注销不在 Heroku 上工作 - 使用 Devise gem 和 Rails 4

ruby - Mac 操作系统支持 Ruby 1.9.3 吗?还是我应该坚持使用 1.8.7?

ruby-on-rails - Ruby On Rails,信誉系统

ruby-on-rails - 从 Linux 中删除 .rbenv

ruby-on-rails - Rails 多对多创建 Controller

ruby - Ruby 中有没有办法打印出对象的公共(public)方法

ruby - 在保留所有 gem 的同时通过 rvm 升级到 Ruby 2.3 的最佳方法?

ruby - 获取给定特定键的哈希值数组

ruby-on-rails - Capybara 和 Poltergeist 的 save_screenshot 的未定义方法

css - 使用 materialize rails 4.2 时无法添加 collection_select