代码之家  ›  专栏  ›  技术社区  ›  Chris Bunch

Ruby-将整数转换为字符串

  •  16
  • Chris Bunch  · 技术社区  · 16 年前

    在Ruby中,尝试打印出字符串的各个元素会给我带来麻烦。我看到的不是每个字符,而是它们的ASCII值:

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

    我在网上查过了,但找不到任何方法可以把原来的“0”从里面取出来。我对Ruby有点陌生,因为我知道它必须是一些简单的东西,但我似乎找不到它。

    7 回复  |  直到 16 年前
        1
  •  15
  •   Joseph Pecoraro    16 年前

    也可以将整数转换为其字符值:

    a[0].chr
    
        2
  •  7
  •   SCdF    16 年前

    您需要[0,1]而不是[0]。

        3
  •  6
  •   Todd Smith    16 年前

    我相信Ruby1.9中的情况正在发生变化,“asdf”[2]生成的是“d”,而不是字符代码

        4
  •  5
  •   Carl Manaster    10 年前

    总结:

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

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

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

    我发现范围选择器是最容易阅读的。有人能谈谈它是否效率较低吗?

        5
  •  1
  •   Community CDub    7 年前

    @Chris ,

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

    退房 String API .

        6
  •  1
  •   Ben Childs    16 年前

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

        7
  •  0
  •   John La Rooy    9 年前

    我想 each_char chars 更好地描述您想要的。

    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