我遇到的情况是我需要一个字符的ASCII值(对于Project Euler question #22,如果你想特定的话),我遇到了一个问题。
对ruby不熟悉,我用Google搜索,发现?
是要走的路:?A
或其他什么。但是当我将它合并到我的代码中时,该语句的结果是字符串"A"
- 没有字符代码。与[0]
和slice(0)
相同的问题,两者理论上都应返回ASCII代码。
我唯一能想到的是这是一个ruby版本问题。我正在使用1.9.1-p0,从今天下午的1.8.6升级。我在同一个目录中对Ruby的工作版本进行了一些欺骗,我想我可能已经有了与.zip文件捆绑在一起的文件了,所以我没有下载它们。
那么为什么我的所有ASCII码都变成了实际的字符呢?
答案 0 :(得分:70)
Ruby之前处理过的字符有点不一致。 ?a
和"a"[0]
将返回一个表示字符ASCII值的整数(通常不是人们正在寻找的行为),但在实际使用中,字符通常由一个字符的字符串表示。在Ruby 1.9中,字符永远不会神秘地变成整数。如果要获取字符的ASCII值,可以使用ord
方法,如?a.ord
(返回97)。
答案 1 :(得分:35)
怎么样
"a"[0].ord
1.8 / 1.9可移植性。
答案 2 :(得分:12)
适用于1.8和1.9
?a.class == String ? ?a.ord : ?a
或
"a".class == String ? "a".ord : "a"[0]
答案 3 :(得分:8)
找到解决方案。 “string”.ord返回s的ascii代码。 看起来我发现的方法在1.9系列的红宝石中被打破了。
答案 4 :(得分:7)
答案 5 :(得分:-2)
如果您再次阅读项目Euler中的问题22,您会发现您没有找到字符的ASCII值。问题是什么,例如字符“A”是1,它在字母表中的位置,其中“A”的ASCII值为65.