我实现了“顶部”和“底部”对齐,但没有实现“中间”对齐,尽管我不认为添加它会很困难。
def multi_concat_top(s1,s2,sep=' ')
multi_concat(s1.split("\n"), s2.split("\n"), sep).join("\n")
end
def multi_concat_bottom(s1,s2,sep=' ')
multi_concat(s1.split("\n").reverse, s2.split("\n").reverse, sep).
reverse.join("\n")
end
def multi_concat(a1,a2,sep)
mx1 = a1.max_by(&:size).size
[a1.size, a2.size].max.times.map { |i|
"%s%s%s" % [a1.fetch(i,'').ljust(mx1), sep, a2.fetch(i,'')] }
end
s1 = "aaaa\na\naaaa"
s2 = "bbb\nbbbb"
puts s1
# aaaa
# a
# aaaa
puts s2
# bbb
# bbbb
puts multi_concat_top(s1,s2,' -> ')
# aaaa -> bbb
# a -> bbbb
# aaaa ->
puts multi_concat_bottom(s1,s2,' -> ')
# aaaa ->
# a -> bbb
# aaaa -> bbbb
phrogs(“中间”除外)执行的测试如下。
s1 = "aaa\naaaa"
s2 = "bbbb\n\n\nbb"
puts s1
# aaa
# aaaa
puts s2
# bbbb
#
#
# bb
puts a.multi_concat_top(s1,s2)
# aaa bbbb
# aaaa
#
# bb
puts a.multi_concat_top(s1,s2,' -> ' )
# aaa -> bbbb
# aaaa ->
# ->
# -> bb
puts a.multi_concat_bottom(s1,s2)
# bbbb
#
# aaa
# aaaa bb
puts multi_concat_top(b,a)
# bbbb aaa
# aaaa
#
# bb