start print index how examples create array ruby string ruby-1.9

index - ruby print array



Ruby 1.9 Array.to_s se comporta de manera diferente? (2)

Escribí una aplicación pequeña y rápida que toma un archivo base de código con algunas palabras clave, un archivo de reemplazos para las palabras clave y genera un nuevo archivo con las palabras clave reemplazadas.

Cuando estaba usando Ruby 1.8, mis resultados se verían bien. Ahora, cuando uso Ruby 1.9, mi código reemplazado tiene los caracteres de nueva línea en lugar de los avances de línea.

Por ejemplo, veo algo como:

["/r/nDim RunningNormal_1 As Boolean", "/r/nDim RunningNormal_2 As Boolean", "/r/nDim RunningNormal_3 As Boolean"]

en lugar de:

Dim RunningNormal_1 As Boolean Dim RunningNormal_2 As Boolean Dim RunningNormal_3 As Boolean

Utilizo un hash de reemplazos {"KEYWORD" => ["1", "2", "3"]} y una matriz de las líneas reemplazadas.

Yo uso este bloque para terminar el reemplazo:

resultingLibs.each do |x| libraryString.sub!(/(<REPEAT>(.*?)<//REPEAT>)/im) do |match| x.each do |individual| individual.to_s end end end #for each resulting group of the repeatable pattern, # #Write out the resulting libs to a combined string

Mi corazonada es que estoy imprimiendo la matriz en lugar de las cadenas dentro de la matriz. Cualquier sugerencia sobre una solución. Cuando depuro e imprimo mi cadena reemplazada con el comando pone, la salida se ve correcta. Cuando uso el método to_s (que es como mi aplicación escribe la salida en el archivo de salida), mi salida se ve mal.

Una solución sería agradable, pero lo que realmente quiero saber es qué cambio cambió entre Ruby 1.8 y 1.9 que causa este comportamiento. ¿Ha cambiado el método to_s de alguna manera en Ruby 1.9?

* Soy inexperto en Ruby


Por favor vea here , bajo Array

Array#to_s is equivalent to Array#inspect [1,2,3,4].to_s # => "[1, 2, 3, 4]" instead of RUBY_VERSION # => "1.8.5" [1,2,3,4].to_s # => "1234"


Sí, estás llamando a to_s en una serie de cadenas. En 1.8, que es equivalente a llamar a join , en 1.9, es equivalente a llamar a inspect .

Para obtener el comportamiento que desea en 1.8 y 1.9, llame a join lugar de to_s .