我想讀一個循環的一些線路和將它們連接起來:如何連接while循環中的字符串?
d = ""
while s = gets do
d = d.concat(s)
end
puts d
後,我取消與循環CNTRL + ž(在Windows上),輸出僅僅是我讀的最後一個字符串在我的循環中。我也嘗試過+
和<<
,但結果相同。
我想讀一個循環的一些線路和將它們連接起來:如何連接while循環中的字符串?
d = ""
while s = gets do
d = d.concat(s)
end
puts d
後,我取消與循環CNTRL + ž(在Windows上),輸出僅僅是我讀的最後一個字符串在我的循環中。我也嘗試過+
和<<
,但結果相同。
你可以做到這一點在兩種方式這樣:
d = ""
while s = gets do
d << s
end
puts d
編輯:使用+=
不太好主意馬克 - 安德烈·Lafortune注意到了,所以我在這裏只留下<<
方法。
哦該死的謝謝,我犯了一個巨大的錯誤:) – SirCheckmatesalot 2013-05-09 17:06:03
+1這些比使用'concat'更加習慣。 – 2013-05-09 17:35:34
如果你可以在原地修改字符串,那麼'<<'看起來好多了,因爲它不會每次都創建一個新的字符串。當需要保存初始字符串時,應該使用'+ ='保留。 – tadman 2013-05-09 17:47:18
兩個好方法是要麼使用<<
或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)
。
您只需要'd.concat(s)'。這是一種破壞性的方法。 – 2013-05-09 17:10:41