gpt4 book ai didi

Ruby - 将字符映射到二维数组中的整数

转载 作者:数据小太阳 更新时间:2023-10-29 07:27:50 25 4
gpt4 key购买 nike

我有一个我一辈子都解决不了的问题。我正在编写一个销售音乐厅门票的 Ruby 应用程序(我已经成为 PHP 开发人员 8 年了,只是从 Ruby 开始)。每个座位都有一排 (a...z) 和一个数字 (1...x)。数据库模型有每个座位的row(string)和num(int)。

如何将我的座位数组从数据库转换为二维数组?例如,座位 A1 将进入 seat[1][1] = "value";座位 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 没有 bytes 方法。您可以通过执行以下操作来完成同样的事情:

row_num = 0
row_string.each_byte {|x| row_num = row_num * 26 + x - ?A + 1}

关于Ruby - 将字符映射到二维数组中的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/864094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com