在Ruby中使用`?`(问号)获取ASCII字符码失败

我处于需要字符的ASCII值的情况(对于Project Euler问题#22 ,如果你想具体),我遇到了一个问题。

作为ruby新手,我search了一下,发现了? 是要走的路: ?A或者其他什么。 但是,当我将它合并到我的代码中时,该语句的结果是string"A" – 无字符代码。 与[0]slice(0)同样的问题,理论上这两个都应该返回ASCII码。

我唯一能想到的是这是一个ruby版本问题。 我正在使用1.9.1-p0,从今天下午1.8.6升级。 我从一个Ruby的工作版本中,在同一个目录中,我骗了一些,我想我可能已经有了不捆绑在.zip文件的文件,所以我没有下载它们。

那么为什么我所有的ASCII码都变成了实际的字符呢?

1.9之前的Ruby处理过的字符有点不一致。 ?a"a"[0]将返回一个表示字符ASCII值的整数(通常不是人们所期待的行为),但在实际使用中,字符通常用一个字符的string表示。 在Ruby 1.9中,字符永远不会神秘地变成整数。 如果你想得到一个字符的ASCII值,你可以使用ord方法,比如?a.ord (返回97)。

怎么样

 "a"[0].ord 

为1.8 / 1.9的便携性。

对于1.8和1.9

 ?a.class == String ? ?a.ord : ?a 

要么

 "a".class == String ? "a".ord : "a"[0] 

find解决scheme。 “string”.ord返回s的ascii码。 看起来像我发现的方法在1.9系列的ruby被打破。

Ruby编程/ ASCII

在1.9之前的ruby版本中,可以使用问号语法。

 ?a 

1.9之后,我们使用ord。

 'a'.ord 

如果您再次阅读Euler项目的问题22,则会发现您并不是在寻找字符的ASCII值。 问题在找什么,例如字符“A”是1,它在字母表中的位置是“A”,其ASCII值是65。