我有一个问题,我不能为我的生活解决.我正在编写一个 Ruby应用程序(我已经是一个 PHP开发人员已经8年了,刚开始使用Ruby),它出售了音乐厅的门票.每个座位都有一行(a … z)和一个数字(1 …
如何将数据库中的席位数组转换为二维数组?例如,座位A1将进入座位[1] [1] =“价值”;座位C4将映射到座位[3] [4] =值.问题是将行字符串转换为Ascii并减去偏移量?或者有更简单的方法吗?
非常感谢
最简单的方法可能是使用哈希.例如:seat [‘A’] [1] = value但是如果你出于某种原因确实需要一个数组,那么你描述的方法就是最简单的.假设行字符串是单个字符’A’到’Z’,您可以使用row_string [0] – ?A(或row_string [0] – ?A 1,如果您希望索引从1开始,如示例中所示).对于行AA位于行Z之后的多字符版本,您可以在1.8.7及更高版本中执行此操作:
row_num = row_string.bytes.inject(0) {|total, x| total = total * 26 + x - ?A + 1}
您可能希望事先将行字符串提升,只是为了安全起见.
在1.8.6及更低版本中,String没有字节方法.你可以通过这样做完成同样的事情:
row_num = 0 row_string.each_byte {|x| row_num = row_num * 26 + x - ?A + 1}