2015-11-26 75 views
2

我有一個字符串,它在任何時候都被分割出來,一行超過69個字符。爲了處理它,我想將它恢復到預先分割的狀態。分割線始終以第二行和後續行上的正斜槓字符開頭,這需要保留。有沒有一個很好的Ruby方法來做到這一點?如何從Ruby上面的行刪除換行符?

# Split version 
GTSS/230028GG/JUL15/LL:123456X3-0051234G4/DES/000G/57NM/57NM/095T 
/002GTS////gts 

# Required output 
GTSS/230028GG/JUL15/LL:123456X3-0051234G4/DES/000G/57NM/57NM/095T/002GTS////gts 

我很高興匹配以斜槓開頭的行。我不知道的是如何從上一行的末尾刪除換行符。

example.lines.each_with_index do |line, index| 
    if line.match(/^\/.+$/) 
    # what goes here? 
    end 
end 
+0

你能告訴有3條線路輸入的例子(6線總數)。你需要讓你的正則表達式匹配每對行和輸出,而不需要額外的回車。 – dankohn

+0

你可能想出了自己的答案,如果你對這個問題的表述方式不同,可以更準確地說:「我怎樣才能用正斜槓替換每個換行符,然後是正斜槓?」 –

回答

7

我會用gsub

string = "GTSS/230028GG/JUL15/LL:123456X3-0051234G4/DES/000G/57NM/57NM/095T\n/002GTS////gts" 
string.gsub("\n/", '/') 
#=> "GTSS/230028GG/JUL15/LL:123456X3-0051234G4/DES/000G/57NM/57NM/095T/002GTS////gts" 
0

您還可以使用lstrip將移除所有的空格(空格,換行...)左起:

example.lines.each_with_index do |line, index| 
    if line.match(/^\/.+$/) 
    line.lstrip 
    end 
end 
0

strip將移除所有的空格(空格,換行...)的整串

0

另一種方式(但我喜歡@ spickermann的回答更好):

str = "GTSS/230028GG/JUL15/LL:123456X3-0051234G4/DES/000G/57NM/57NM/095T 
/002GTS////gts" 

str.split("\n/").join("/") 
    #=> "GTSS/230028GG/JUL15/LL:123456X3-0051234G4/DES/000G/57NM/57NM/095T/002GTS////gts"