当前位置:  开发笔记 > 后端 > 正文

Ruby:来自字符串的ascii字符

如何解决《Ruby:来自字符串的ascii字符》经验,为你挑选了6个好方法。

这个维基页面提供了如何将单个字符串转换为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
                ^

Konrad Rudol.. 53

c变量已包含char代码!

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

产量

115
116
114
105
110
103


alexsuslin.. 19

puts "string".split('').map(&:ord).to_s

甚至比`split('')更好叫`chars` (10认同)


LastZactionH.. 9

Ruby String提供codepoints1.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]


小智.. 8

请参阅这篇文章,了解ruby1.9中的更改.使用`?`(问号)在Ruby中获取ASCII字符代码失败



1> Konrad Rudol..:

c变量已包含char代码!

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

产量

115
116
114
105
110
103



2> alexsuslin..:
puts "string".split('').map(&:ord).to_s


甚至比`split('')更好叫`chars`

3> LastZactionH..:

Ruby String提供codepoints1.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]



4> 小智..:

请参阅这篇文章,了解ruby1.9中的更改.使用`?`(问号)在Ruby中获取ASCII字符代码失败



5> nikkypx..:

您也可以在each_byte甚至更好的String#bytes之后调用to_a

=> '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]



6> 小智..:

对单个字符使用"x".ord或对整个字符串使用"xyz".sum.

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有