我想将Encoding : uu
Orig : Cat
Encoded : b'begin 666 <data>\n#0V%T\n \nend\n'
byte UnEncoded: b'Cat'
utf8 UnEncoded: Cat
Encoding : base-64
Orig : Cat
Encoded : b'Q2F0\n'
byte UnEncoded: b'Cat'
utf8 UnEncoded: Cat
分成两半,并分别分配给str
和first
就像这个伪代码示例:
second
答案 0 :(得分:3)
class String
def halves
chars.each_slice(size / 2).map(&:join)
end
end
会起作用,但是您将需要调整以处理奇数大小的字符串。
或在线:
first, second = str.chars.each_slice(str.length / 2).map(&:join)
答案 1 :(得分:2)
first,second = str.partition(/.{#{str.size/2}}/)[1,2]
您可以使用partition。使用正则表达式模式查找X个字符(在这种情况下为str.size / 2
)。
分区返回三个元素;头,火柴和尾巴。因为我们可以匹配任何字符,所以 head 始终是空白字符串。因此,我们只关心 match 和 tail ,因此[1,2]
答案 2 :(得分:2)
def halves(str)
[str[0, str.size/2], str[str.size/2..-1]]
end
first, second = halves('abcdef')
#=> ["abc", "def"]
first, second = halves('abcde')
#=> ["ab", "cde"]
如果确定要使用String#split
,则可以(拙劣地)写:
first, second = str.insert(str.size/2, 0.chr).split(0.chr)
答案 3 :(得分:0)
注意:这仅适用于偶数长度的字符串。
沿着伪代码行
first, second = string[0...string.length/2], string[string.length/2...string.length]
如果string
是原始字符串。