如何扩展String类,并附加名为to_bytes
的方法?如何将字符串转换为Ruby中的字节?
17
A
回答
21
红宝石已经具有String#each_byte
方法,其别名为String#bytes
。
在Ruby 1.9之前,字符串等同于字节数组,即字符被假定为单个字节。对于ASCII文本和各种文本编码(如Win-1252和ISO-8859-1),这很好,但在Unicode上出现了严重错误,我们在网络上越来越频繁地看到它。 Ruby 1.9+支持Unicode,字符串不再被认为是由字节组成,而是由多个字节组成的字符组成。
因此,如果您试图将文本操作为单个字节,则需要确保您的输入为ASCII或至少一个基于单字节的字符集。如果您可能有多字节字符,则应使用String#each_char
或String.split(//)
或String.unpack
以及U
标志。
是什么//意味着
String.split(//)
//
是一样的使用''
。要么告诉split
返回字符。您通常也可以使用chars
。
35
String#bytes
通过字符串字节返回枚举数。 .to_a
可以将其转换为数组。
"asd".bytes.to_a
=> [97, 115, 100]
0
在解压的帮助下,我们可以将字符串转换为任何格式: - 字节,咬(MSB,LSB),ASCII或十六进制。请通过以下链接: - http://blog.bigbinary.com/2011/07/20/ruby-pack-unpack.html。将字符串转换为字节: -
"abcde".unpack('c*')
=> [97, 98, 99, 100, 101]
相关问题
- 1. 在Ruby中将0-F字符串转换为字节数组
- 2. 如何将字节字符串转换为字节[]
- 3. 将字节字符串转换为python中的字符串
- 4. 如何在Oracle中将字节字符串转换为数字?
- 5. 将字符串转换为字节[]
- 6. Java - 将字节[]转换为字符串
- 7. 将字节转换为字符串
- 8. 将字符串转换为字节
- 9. 将字节[]转换为UTF8字符串
- 10. 如何将字符和字符串转换为字节数组?
- 11. 将字符串[]转换为字节[] 2个字符转换为字节?
- 12. 将字节值存储在字符串中?将字节转换为字符串?
- 13. 字符串转换为字节转换
- 14. 如何将字符串转换为javascript中的字节
- 15. 如何将字符串转换为java中的字节?
- 16. 如何将字符串转换为RHINO Js中的字节
- 17. 如何将字节转换为Java中的相同字符串
- 18. 如何将字符串中的字节转换为整数? Python
- 19. 如何将字节转换为gdb中的字符串
- 20. 如何将字节转换为Android USB Host中的字符串?
- 21. 如何在Go中将[Size]字节转换为字符串?
- 22. 如何在Ruby中将字符串的值从字符串转换为数组?
- 23. 如何将csv字节字符串转换为Java中的字节数组?
- 24. 将字符串转换为DateTime Ruby
- 25. Ruby - 将Integer转换为字符串
- 26. Ruby将字符串转换为文件
- 27. Ruby - 将字符串转换为日期
- 28. Ruby:将常量转换为字符串
- 29. Ruby将字符串转换为散列
- 30. C#将字节数组与字符串转换为字符串
'“фыв”.bytes.to_a => [209,132,209,139,208,178]' - unicode字符串的字节。提问者需要字节,而不是字符。我没有看到任何问题。或者我没有看到什么? – Nakilon 2010-11-05 17:20:27
是的,我说已经有'each_byte'和'bytes'方法可用,所以不需要用'to_bytes'方法扩展String。关于Unicode字符和字节:是的,您可以轻松地将字符转换为其组件字节,但不能像处理单个字符那样操作它们,因为某些字节不是字符值,而是指示如何修改字符。任何人如果不知道这一点,并且希望将文本当作字节处理,那么当他们第一次遇到Unicode时,将会有很大的觉醒。 – 2010-11-05 20:19:40
'String.split(//)'中的'//'meain是什么? – 2014-11-17 11:52:10