3

StackOverflow のすべてのソリューションを閲覧したに違いありませんが、次のようなテキスト ファイルから空白行を削除しているようには見えません。

google
yahoo

facebook

reddit

他のソースの中で、私は試しました:

File.foreach("file.txt") { |line|
  line.gsub(/^$\n/, '')
}

replace = text.gsub /^$\n/, ''
File.open("file.txt", "w") { |file| file.puts replace }

ただし、これらは機能していません。私は髪を引き裂いています。ネイティブのこぎりメソッドがないようで、正規表現も機能していません。

4

5 に答える 5

2

代わりに空かどうかを確認してみてはどうでしょうか。

out = File.new("out.txt", "w")

File.foreach("file.txt") { |line|
  out.puts line unless line.chomp.empty?
}
于 2013-03-25T20:41:47.277 に答える
2

以下のライナーを使用して、ファイルからすべての空白行を削除します

file = "/tmp/hello.log"
File.write(file, File.read(file).gsub(/\n+/,"\n"))
于 2015-01-11T16:19:46.600 に答える
0
source_file = '/hello.txt'
new_file = File.new('/hello_new.txt')
File::open(new_file,'w') do |file|
  File::open(source_file,'r').each(sep="\n") do |line|
    file << line unless line.gsub("\n",'').length == 0
  end
end
于 2013-03-25T20:36:08.000 に答える
0

gsub を少し変更すると動作します

File.foreach("file.txt"){|line|
  line.gsub("\n", '')
}
于 2013-03-25T20:33:38.397 に答える
0

これにはString#squeezeが便利です。ここでは、一連のライン エンドを 1 つのライン エンドに減らします。

open("out.txt", "w") {|out| open("test.txt") {|in| out << in.read.squeeze("\n")}}
于 2013-03-25T21:37:00.520 に答える