我想匹配以“SLX-”开头的两行之间的所有行(包括第一行),将它们转换为逗号分隔行,然后将它们附加到文本文件中。
原始文本文件的截断版本如下所示:
Book.where({id: 1}).fetch({withRelated: ['author']}).then(function(book) {
console.log(JSON.stringify(book.related('author')));
});
我想红宝石看起来像
我认为我特别关注如何查找和替换两个特定行。
我想我可以在不使用ruby的情况下做到这一点,但看到我正试图进入Ruby ......
答案 0 :(得分:1)
假设您的字符串位于str
:
require 'csv'
CSV.open("/tmp/file.csv", "wb") do |csv|
str.scan(/^(SLX-.*?)(?=\R+SLX-)/m).map do |s| # break by SLX-
s.first.split($/).map do |el| # split by CR
"'#{el}'" # quote values
end
end.each do |line| # iterate
csv << line # fulfil csv
end
end
答案 1 :(得分:0)
我对Ruby不太了解,但这应该有效。您应该将整个文件读入Sting。使用此正则表达式 - (\RSLX-)
- 匹配所有SLX-
(除第一个之外的所有内容)并将其替换为,SLX-
。有关正则表达式的说明,请转到https://regex101.com/r/pP3pP3/1
这个问题 - Ruby replace string with captured regex pattern - 可能会帮助您了解如何在ruby中替换