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/