2008-09-27 151 views

回答

44

c變量已經包含字符代碼!

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

產生

115 
116 
114 
105 
110 
103 
3
"a"[0] 

?a 

雙方將返回其對應的ASCII碼。

+4

的確在Ruby 1.9的這種變化? – Gishu 2009-11-12 10:12:02

+1

是的,在Ruby 1.8中,它返回字符ascii的值,但它在ruby 1.9中的索引處使用ruby ... – David 2010-06-27 15:22:59

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

使用「X」 .ord單個字符或「XYZ」的.sum整個字符串。

2

Ruby String提供了1.9.1之後的codepoints方法。

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] 
1

你也可以只叫to_a each_byte後甚至更好的字符串#字節

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