字符串a =“1,2,3”字符串b =“4,5,6”在Ruby中需要回答c =(1,4),(2,5),(3,6)

时间:2015-10-23 06:50:03

标签: ruby

我有两个字符串

if (message instanceof ActiveMQTextMessage) {
    ActiveMQTextMessage amqMessage = (ActiveMQTextMessage) message;
    mqDelegate.execute(params, amqMessage.getText());
} else {
    BytesMessage bm = (BytesMessage) message;
    byte data[] = new byte[(int) bm.getBodyLength()];
    bm.readBytes(data);
    mqDelegate.execute(params, new String(data));
}

如何实现此结果a = "1,2,3" b = "4,5,6" 。我已经尝试了很多解决方案,但没有成功

3 个答案:

答案 0 :(得分:4)

使用Array#zip创建一对数组。

a.split(',').zip(b.split(',')).map { |x, y| "(#{x},#{y})" }.join(', ')

答案 1 :(得分:1)

使用zip代替product。这里:

puts a.split(',').map(&:to_i).zip(b.split(',').map(&:to_i)).to_s.tr('[]', '()')
# ((1, 4), (2, 5), (3, 6))

解释步骤:

  • a.split(',')将拆分数组。 (["1", "2", "3"]
  • .map(&:to_i)会将Array元素转换为整数([1, 2, 3]
  • .zip将以所需的方式合并两个阵列。
  • 我使用两个tr[]替换为()

答案 2 :(得分:0)

require 'json'
((JSON.load("[#{a}]").zip JSON.load("[#{b}]")).to_s.tr'[]','()')[1...-1]