我正处于需要字符的ASCII值的情况下(对于Project Euler问题#22,如果你想要具体的话),我遇到了一个问题.
作为红宝石的新手,我用Google搜索,发现这?是要走的路:?A或者其他什么.但是当我将它合并到我的代码中时,该语句的结果是字符串"A"-no字符代码.同样的问题,与[0]和slice(0),两者理论上应该返回ASCII码.
我唯一能想到的是这是一个ruby版本的问题.我正在使用1.9.1-p0,从今天下午的1.8.6升级.我在同一个目录中欺骗了一个工作版本的Ruby,我想我可能已经有了与.zip文件捆绑在一起的文件了,所以我没有下载它们.
那么为什么我的所有ASCII码都变成了实际的字符呢?
Chu*_*uck 70
Ruby之前处理过的字符有些不一致.?a并"a"[0]返回一个表示字符ASCII值的整数(通常不是人们所寻找的行为),但在实际使用中,字符通常由一个字符的字符串表示.在Ruby 1.9中,字符永远不会神秘地变成整数.如果要获取字符的ASCII值,可以使用该ord方法,如?a.ord(返回97).
小智 12
对于1.8和1.9
?a.class == String ? ?a.ord : ?a
要么
"a".class == String ? "a".ord : "a"[0]
找到了解决方案."string".ord返回s的ascii代码.看起来我发现的方法在1.9系列红宝石中被破坏了.
在1.9之前的ruby版本中,您可以使用问号语法.
?a
在1.9之后,我们使用ord代替.
'a'.ord