Ruby - 将整数转换为字符串

时间:2008-08-27 04:19:42

标签: ruby arrays

在Ruby中,尝试打印String的各个元素给我带来了麻烦。我没有看到每个字符,而是看到了他们的ASCII值:

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

我看过网上但找不到任何办法让原来的“0”退出。我对Ruby有点新意,我知道它必须是简单的,但我似乎无法找到它。

7 个答案:

答案 0 :(得分:15)

或者您可以将整数转换为其字符值:

a[0].chr

答案 1 :(得分:7)

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

答案 2 :(得分:6)

我相信这在Ruby 1.9中正在改变,以至于“asdf”[2]产生“d”而不是字符代码

答案 3 :(得分:5)

总结:

此行为将在版本1.9中消失,其中返回字符本身,但在以前的版本中,尝试通过字符位置引用字符串的单个字符将返回其字符值(所以“ABC”[ 2]返回67)

有许多方法可以从字符串返回一系列字符(请参阅字符串slice method上的Ruby文档)以下所有返回“C”:

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

我发现范围选择器是最容易阅读的。任何人都可以谈论效率是否低效?

答案 4 :(得分:1)

@Chris

这就是如何为String类定义[]和[,]。

查看String API

答案 5 :(得分:1)

[,]运算符返回一个字符串给你,它是一个子字符串运算符,其中[]运算符返回ruby在打印时将其视为数字的字符。

答案 6 :(得分:0)

我认为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