arrays - 如何查找从文件中读取的二维数组的元素数量?

标签 arrays ruby multidimensional-array

我有一个文件。在文件内部我存储了一个二维数组,如下所示:

[[0, 0, 1, 0, 1, 0, 1, 0, 1, 0], [0, 0, 0, 0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 1, 1, 1, 1, 0, 0], [0, 0, 0, 1, 0, 0, 1, 0, 0, 0], [0, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 1, 1, 0], [0, 1, 1, 0, 1, 0, 1, 0, 1, 0], [0, 1, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 1, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

数组的长度可能会有所不同,并且它们并不总是 10 个元素长。

我使用此方法从文件中读取数组:

map = IO.readlines("test.txt")

当我使用以下方式打印结果时:

map.each {|x| puts "#{x}"}

输出是我所期望的。但是如果我尝试使用以下方法获取行长度:

puts map[0].length

我得到了 320 而不是 10(这是我所期望的)。

有人可以解释一下为什么我得到的是 320 而不是 10 吗?

最佳答案

您应该使用 JSON#parse 而不是 IO#readlines因为它是一个有效的 json:

require 'json'    
JSON.parse(File.read("test.txt"))
#⇒ [[0, 0, 1, 0, 1, 0, 1, 0, 1, 0],
#   [0, 0, 0, 0, 0, 0, 1, 1, 0, 0],
#   [0, 0, 0, 0, 1, 1, 1, 1, 0, 0],
#   [0, 0, 0, 1, 0, 0, 1, 0, 0, 0],
#   [0, 1, 1, 0, 0, 0, 0, 0, 0, 0],
#   [0, 0, 0, 0, 0, 0, 1, 1, 1, 0],
#   [0, 1, 1, 0, 1, 0, 1, 0, 1, 0],
#   [0, 1, 0, 0, 0, 0, 0, 1, 0, 0],
#   [0, 0, 0, 1, 0, 0, 0, 1, 0, 0],
#   [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

关于arrays - 如何查找从文件中读取的二维数组的元素数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52079114/

相关文章:

Java读取.csv文件并获取java.lang.ArrayIndexOutOfBoundsException : 3 and don't know why

javascript - Rails 中需要类似的日期函数

ruby-on-rails - Rails 内联附件在 gmail 中未正确显示

MongoDB多维数组投影

java - 获取二维数组内平方的平均值

arrays - 获取一行中的特定数组项 (PostgreSQL)

c - 使用 fgets() 将字符放入数组会创建自动输入吗?

Python:字典中 numpy 数组的高效串联

arrays - 从 SKSpriteNode 类实例访问 GameScene 中的数组?

ruby - Pod MissingSpecError、Ruby、Gem、Cocoapods 等