2015-04-08 54 views
0

我试图从文件中输入文本,忽略第一行,并将每个字符添加到单独索引[[],[]]的二维数组中。到目前为止,我可以将人物添加到自己的索引,但不能删除与.chomp或等RUBY:将文本文件读入二维数组,同时删除换行符?

我想换行字符我的最终结果是

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

这样[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 

我结束了一个二维数组,如:

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

回答

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 
+0

你是一个救星!这样做,谢谢! – EnduranceMan

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