在红宝石,试图打印出来的个别要素的一串是给我的麻烦。而不是看到每个角色的,我看到他们的ASCII值来代替:

>> a = "0123"
=> "0123"
>> a[0]
=> 48

我在网上看了但找不到任何方式获得原始"0"回了它。我有点新的红宝石到我知道它已经是一些简单的但我似乎找不到它。

有帮助吗?

解决方案

或者你可以把整其角色值:

a[0].chr

其他提示

你想要一个在[0,1],而不是一个[0].

我认为这是改变中的红宝石1.9如"航空自卫队"[2]的收益率"d"而不是文字代码

以总结:

这种行为将要离开在1.9版,其中的字本身返回,但在以前的版本,试图以参照一个单一的字符串通过其符位置将返回其角色值(所以"ABC"[2]返回67)

还有一些方法,返回一个字符的范围从一串(见的红宝石文件的字符串 切片的方法)以下所有返回"C":

"ABC"[2,1] 
"ABC"[2..2]
"ABC".slice(2,1)

我找到的范围内选择是最简单的阅读。任何人都可以说是否是低效率?

@克里斯,

这就是[]和[,]定义的字符串类。

检查出来的 串API.

该[,]操作者返回串回到你,这是一个串的操作者,在那里作为[]操作者返回的性质ruby视为一个数字的时候打印出来。

我认为 each_charchars 介绍更好的你想要什么。

irb(main):001:0> a = "0123"
=> "0123"
irb(main):002:0> Array(a.each_char)
=> ["0", "1", "2", "3"]
irb(main):003:0> puts Array(a.each_char)
0
1
2
3
=> nil
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top