如何在while循环中连接字符串?

时间:2013-05-09 17:00:16

标签: ruby

我想在循环中读取一些行并将它们连接起来:

d = ""
while s = gets do
  d = d.concat(s)
end
puts d

CNTRL + Z (在Windows上)取消循环后,输出就是我在循环中读取的最后一个字符串。我也尝试使用+<<但结果相同。

2 个答案:

答案 0 :(得分:5)

你可以用两种方式这样做:

d = ""
while s = gets do
  d << s
end
puts d

编辑:Marc-AndréLafortune注意到使用+=并不是一个好主意,所以我只留下<<方法。

答案 1 :(得分:1)

两种好方法是使用<<join

d = ""
while s = gets do
  d << s
end
puts d

或者

a = []
while s = gets do
  a << s
end
puts a.join

不想做的内容是在第一个示例中使用+=。想象一下,你的循环迭代200次并返回100个字符长s。您将构建200个字符串,长度为100,200,300,...,199900,200000。这将是O(n^2)