2010-07-02 16 views
18

En una cadena de rubíes, ¿cómo puedo insertar un espacio cada X número de caracteres?Ruby: inserte espacios cada X número de caracteres

Como ejemplo, me gustaría insertar un espacio cada 8 caracteres de una cadena dada.

+0

posible duplicado de [¿Cómo creo espacios entre cada cuatro enteros en Ruby?] (Http://stackoverflow.com/questions/3053328/how-do-i-create-spaces-between-every-four-integers -en-ruby) –

Respuesta

22
>> s = "1234567812345678123456781234567812345678" 
=> "1234567812345678123456781234567812345678" 
>> s.gsub(/(.{8})/, '\1 ') 
=> "12345678 12345678 12345678 12345678 12345678 " 

Editar: Usted podría utilizar búsqueda positiva hacia delante para evitar añadir un espacio adicional al final:

>> s.gsub(/(.{8})(?=.)/, '\1 \2') 
=> "12345678 12345678 12345678 12345678 12345678" 
+0

Cerrar. ¿Qué pasa con cada 8 caracteres, pero no agrega un espacio al final de la cadena? – Shpigford

+3

simplemente agregue un 'strip!'. por lo que se convertiría en 's.gsub (/ (. {8}) /, '\ 1') .strip!' –

+1

¿Qué sucede si la cadena inicialmente tenía espacios iniciales o finales? – Nabb

16

Solución alternativa:

s.scan(/.{1,8}/).join(' ') 

String#scan voluntad trozo arriba para usted (en tramos de 8 caracteres, a excepción del último trozo, que puede ser más corto), y luego Array#join reunirá los trozos con el personaje apropiado intercalado.

Cuestiones relacionadas