【发布时间】:2017-06-15 04:56:50
【问题描述】:
我正在使用 Roo Gem 并希望从基于标准 A1 语法的电子表格中提取数据。
我在电子表格中有超出 Z 的列,因此 Excel 会处理整个 AA、AB、AC 列的位置。
我想为列 W 到 AH 创建一个数组。
Ruby 似乎不喜欢上限超出 Z 但还没有从 A 开始??
任何想法如何("B".."AC").to_a 而不是[]
这是irb中的基本问题。
("A".."Z").to_a
#=> ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
("B".."Z").to_a
#=> ["B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
("A".."AC").to_a
#=> ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC"]
("B".."AC").to_a
#=> []
【问题讨论】:
-
对不起,我想保持简短,所以使用数组范围语法。我可以接受替代方案,只要它简短且易于维护。
-
('B'..'Z').to_a + ('A'..'AC').to_a太丑了? -
是的,我刚做了那个。我现在会使用它,但我想我可能会遗漏一些明显的东西
-
有趣。我希望
String#upto能够正确处理这个问题,但它也失败了。我已经提交了bug report。