RUBY:将文本文件读入2D数组,同时删除换行符?

时间:2015-04-08 15:44:01

标签: ruby-on-rails ruby arrays loops

我试图从文件中输入文本,忽略第一行,并将每个字符添加到单独索引[[],[]]的2D数组中。到目前为止,我可以将字符添加到自己的索引中,但不能使用.chomp等删除换行符。

我希望我的最终结果是

[['*','.','.','.']","['.','.','*','.']","['.','.','.','.']]

例如,[0][0]将返回*[0]将返回*...

现在我回来了

[['*','.','.','.',"\n"]","['.','.','*','.',"\n"]","['.','.','.','.',"\n"]]

有问题的代码是:

def load_board(file)
    board = File.readlines(file)[1..-1].map do |line|
        line.split("").map(&:to_s)
    end
end

origin_board = load_board('mines.txt')
print origin_board

如果我尝试以下代码:

def load_board(file)
    board = File.readlines(file)[1..-1].map do |line|
        line.split.map(&:to_s)
    end
end

origin_board = load_board('mines.txt')
print origin_board

我最终得到了一个2D数组,如:

[["*..."],["..*."],["...."]]

2 个答案:

答案 0 :(得分:0)

剥离您的输入应该有所帮助:

def load_board(file)
    board = File.readlines(file)[1..-1].map do |line|
        #    ⇓⇓⇓⇓⇓
        line.strip.split("").map(&:to_s)
    end
end

String#strip将从字符串中删除前导尾随空格。另一个选项是不使用readlines支持readsplit $/(行分隔符):

def load_board(file)
    board = File.read(file).split($/)[1..-1].map do |line|
        line.split("").map(&:to_s)
    end
end

答案 1 :(得分:0)

您可以在.split之前添加.chomp,如下所示:

def load_board(file)
    board = File.readlines(file)[1..-1].map do |line|
        line.chomp.split("").map(&:to_s)
    end
end

没有完全测试它,但做了一些摆弄,它应该工作http://repl.it/hgJ/1