2011-10-06 10 views

Respuesta

10
part1, part2 = str.slice!(0...6), str 

puts part1 # => 267234 
puts part2 # => 62345 
puts str # => 62345 
+1

me gusta esta mejor que la mía. Aunque agregaría str = part1 + part2 al final para que la cadena no cambie. – Yule

+0

Bueno, si desea mantener 'str' sin cambios, entonces su solución es mejor, creo. –

+0

Qué tal: str, part1, part2 = str.clone, str.slice! (0..6), str – Yule

0

Aquí hay una versión reutilizable para usted:

str  = "26723462345" 
n   = str.length 
boundary = 6 
head  = str.slice(0, boundary) # => "267234" 
tail  = str.slice(boundary, n) # => "62345" 

También conserva la cadena original, que puede ser útil más adelante en el programa.

+0

Puede usar '-1' en lugar de tener que obtener la longitud de la cadena. –

0

Como respuesta diversión, ¿qué tal:

str.split(/(^.{1,6})/)[1..-1] 

Esto funciona porque dividida devuelve el grupo de captura coincide, además de las partes de la cadena antes y después de la expresión regular.

3

La mejor manera OMI es string.scan(/.{6}/)

irb(main)> str 
=> "abcdefghijklmnopqrstuvwxyz" 
irb(main)> str.scan(/.{13}/) 
=> ["abcdefghijklm", "nopqrstuvwxyz"] 
Cuestiones relacionadas