如何从Ruby中的上一行中删除换行符?

时间:2015-11-26 18:14:56

标签: ruby

我有一个字符串,只要一行超过69个字符,就会被拆分。为了处理它,我想将它恢复到预先拆分的方式。分割线始终以第二行和后续行上的正斜杠字符开头,需要保留。有没有一个很好的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

4 个答案:

答案 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"

答案 1 :(得分:0)

你也可以使用lstrip从左边删除所有空格(空格,换行符......):

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

答案 2 :(得分:0)

strip将删除所有空格(空格,换行符......)整个字符串

答案 3 :(得分: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"