Recipe 1.6. Converting Between Characters and Values
Problem
如何把一个ASCII code 转换成一个字符(character),或者把一个ASCII码转换成一个字符串.
Solution
可以用?操作符,来看一个ASCII code对应的integer值:
?a # => 97
?! # => 33
?/n # => 10
如果要看一个字符串中某个字符的integer值,可以把这个字符串当作数组来操作:
'a'[0] # => 97
'bad sound'[1] # => 97
如果要看一个给定数值所对应的ASCII character,可以调用它的#chr 方法.它返回一个只包含这个character的字符串:
97.chr # => "a"
33.chr # => "!"
10.chr # => "/n"
0.chr # => "/000"
256.chr # RangeError: 256 out of char range
Discussion
尽管一个字符串在技术实现上面并不是一个数组,但是它非常像一个保存固定大小对象的数组:每个对象的大小是一个字节.
Accessing a single element of the "array" yields a Fixnum for the corresponding byte: for textual strings,
this is an ASCII code.调用String#each_byte可以让你遍历字符串中的每个对象(每个字符).
See Also
Recipe 1.8, "Processing a String One Character at a Time"
Problem
如何把一个ASCII code 转换成一个字符(character),或者把一个ASCII码转换成一个字符串.
Solution
可以用?操作符,来看一个ASCII code对应的integer值:
?a # => 97
?! # => 33
?/n # => 10
如果要看一个字符串中某个字符的integer值,可以把这个字符串当作数组来操作:
'a'[0] # => 97
'bad sound'[1] # => 97
如果要看一个给定数值所对应的ASCII character,可以调用它的#chr 方法.它返回一个只包含这个character的字符串:
97.chr # => "a"
33.chr # => "!"
10.chr # => "/n"
0.chr # => "/000"
256.chr # RangeError: 256 out of char range
Discussion
尽管一个字符串在技术实现上面并不是一个数组,但是它非常像一个保存固定大小对象的数组:每个对象的大小是一个字节.
Accessing a single element of the "array" yields a Fixnum for the corresponding byte: for textual strings,
this is an ASCII code.调用String#each_byte可以让你遍历字符串中的每个对象(每个字符).
See Also
Recipe 1.8, "Processing a String One Character at a Time"