Ruby: символ для строки из строки - PullRequest
26 голосов
/ 27 сентября 2008

эта вики-страница дала общее представление о том, как преобразовать один символ в ascii http://en.wikibooks.org/wiki/Ruby_Programming/ASCII

Но скажите, если у меня есть строка, и я хочу получить из нее ascii каждого персонажа, что мне нужно сделать?

"string".each_byte do |c|
      $char = c.chr
      $ascii = ?char
      puts $ascii
end

Это не работает, потому что не устраивает строка $ ascii =? Char

syntax error, unexpected '?'
      $ascii = ?char
                ^

Ответы [ 7 ]

50 голосов
/ 27 сентября 2008

Переменная c уже содержит код символа!

"string".each_byte do |c|
    puts c
end

выходы

115
116
114
105
110
103
17 голосов
/ 19 марта 2012
puts "string".split('').map(&:ord).to_s
7 голосов
/ 23 июля 2015

Ruby String предоставляет метод codepoints после 1.9.1.

str = 'hello world'
str.codepoints.to_a
=> [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100] 

str = "你好世界"
str.codepoints.to_a
=> [20320, 22909, 19990, 30028]
7 голосов
/ 03 марта 2010

пожалуйста, обратитесь к этому сообщению за изменениями в ruby1.9 Не удается получить код символа ASCII в Ruby с использованием `?` (Вопросительный знак)

6 голосов
/ 15 декабря 2013

используйте «x» .ord для одного символа или «xyz» .sum для всей строки.

4 голосов
/ 13 ноября 2015

Вы также можете просто вызывать to_a после каждого_байта или даже лучше String # bytes

=> 'hello world'.each_byte.to_a
=> [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]

=> 'hello world'.bytes
=> [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]
4 голосов
/ 13 октября 2009
"a"[0]

или

?a

Оба вернут свой эквивалент ASCII.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...