我有两个字符串
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"
。我已经尝试了很多解决方案,但没有成功
答案 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]