2011-03-27 10 views
8

que estoy haciendo:¿Cómo evito que los elementos vacíos que se eliminan se eliminen al dividir cadenas?

"b::::c:::".split(':') 

Resultado:

["b", "", "", "", "c", "", ""] # expect 
["b", "", "", "", "c"] # actual 

¿Cuál es el problema aquí? ¿Cómo puedo obtener lo que esperaba?

+3

Sólo como referencia, aquí está la documentación para [cadena # dividida] (http://rubydoc.info/stdlib/core/1.9.2/String#split-instance_method). –

+1

Esta es una gran pregunta. Leí String # split completamente y me estaba rascando la cabeza con este. – Plasmarob

Respuesta

18

Hay un parámetro limit en .split(pattern=$;, [limit]). Si se omite limit, se suprimen los campos nulos finales. Es necesario proporcionar un negativo limit

"b::::c:::".split(':', -1) 

pero hay que tener en cuenta que esto devolverá tres "" valores al final de la matriz.

result: ["b", "", "", "", "c", "", "", ""] 
+0

gracias, ayudó. – user612308

+1

Honestamente, creo que esta pregunta necesita más atención en el s.o. Fue realmente difícil de encontrar y casi pregunté exactamente lo mismo q. – Plasmarob

+0

lea esto para saber más sobre ruby ​​split @ http://gfxmonk.net/2011/09/04/ruby-s-split-function-makes-me-feel-special-in-a-bad-way.html –

Cuestiones relacionadas