我有这个代码可以打印两次字符串的每个字符:
r = "12345"
r.split("").each do |ch|
puts "#{ch}#{ch}"
end
我得到了这个输出:
11
22
33
44
55
我想将输出"1122334455"
存储在变量中。如何重写代码才能执行此操作?
答案 0 :(得分:3)
您可以使用字符将字符串中的每个字符作为" main"中的值。数组,然后使用map格式化里面的元素,然后将它们全部连接成最终的字符串,如:
r = '12345'
capture = r.chars.map { |ch| ch * 2 }.join
p capture
# "1122334455"
答案 1 :(得分:3)
一种方法:
r.gsub(/(.)/,'\1\1') #=> "1122334455"
答案 2 :(得分:2)
Sagar和Sebastian的回答是直截了当的方法,但是如果你想坚持原始代码(迭代字符),那么这是另一种方式:
variable = r.each_char.with_object(""){|c, s| s << c * 2}
# => "1122334455"
答案 3 :(得分:0)
您可以在Ruby&gt;中使用Array#sum
2.4
'12345'.chars.sum('') { |n| n * 2 }
#=> "1122334455"