2011-04-27 9 views
5

estoy migrando de rieles 2.1.2 a 2.3.5 y uno de los elementos que ya no funciona esstring.chars.length vs string.length

"string".chars.length 

utilicé la consola para descubrir que .chars "cadena" es un método ActiveSupport en 2.1.2 y 2.3.5 en un Enumerable

Así, en la realización de esta migración, me preguntaba cuál es la diferencia en el uso de

"string".chars.length 

vs

"string".length 

¿Volverán lo mismo? Parece que, solo quería saber si conoces la diferencia para poder aprender.

Gracias

Respuesta

10

Si estaba utilizando el método #chars porque estabas tratando con cadenas Unicode, entonces usted puede utilizar #mb_chars lugar, y esto es probablemente la mejor opción para garantizar su código actúa exactamente igual que lo hizo en 2.1.2:

"string".mb_chars.length 
=> 6 

sin embargo, si usted está usando Ruby 1.9, o si se encuentra en Rubí 1.8, pero no es necesario para hacer frente a las cadenas Unicode, sólo puede utilizar "string".length. (En Ruby 1.9, #mbchars simplemente devuelve self de todos modos ya 1.9 tiene mucho mejor soporte para las cadenas Unicode.)

Ver the API documentation para obtener más información.

Cuestiones relacionadas