2015-11-26 28 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"