2012-03-09 8 views
6

que tiene una matriz de esta manera:¿Cómo elimino un carácter del elemento de matriz?

["ee", "3/4\"", "22\"", "22\""] 

y me gustaría que elimine las comas, \" o reemplazar eso con &#34 para que la matriz se ve así:

["ee", "3/4", "22", "22"] 

o este :

["ee", "3/4&#34", "22&#34", "22&#34"] 

La razón es que estoy tratando de pasar esa matriz de Ruby a JavaScript, pero me siguen dando una "T error constante de cadena nterminada "¡y no puedo encontrar una manera de evitarlo!

Esto es lo que estoy usando para pasar la información a JavaScript:

cut_list="from_ruby_cut(\""+c[1]+"\")" 
+2

¿Hay alguna razón en particular por la que no esté utilizando JSON? –

+1

Sí ... No tengo idea de qué es JSON ... :) Soy bastante nuevo en todo esto de programación, por lo que mi conocimiento es bastante limitado, desafortunadamente. Buscaré en JSON y veré si eso podría ayudar. – JoMojo

+0

¿No debería la entidad '& #' terminar con un punto y coma? (por ejemplo, '"') –

Respuesta

10

Para volver a colocar cada elemento de una matriz con una versión modificada, como reemplazar el carácter deseado, puede utilizar la función map! . Dentro del bloque, use gsub para reemplazar el carácter no deseado ".

array = ["ee", "3/4\"", "22\"", "22\""] 

array.map!{ |element| element.gsub(/"/, '') } 
array 
#=> ["ee", "3/4", "22", "22"] 

array.map!{ |element| element.gsub(/"/, '&#34') } 
array 
#=> ["ee", "3/4&#34", "22&#34", "22&#34"] 

Sin embargo, también puede ser capaz de resolver su problema mediante el uso de c[1].inspect en lugar de c[1] la construcción de su cadena de JavaScript. Si usa inspeccionar, imprimirá la cadena con las comillas incluidas y la barra diagonal inversa para evitar la cita dentro de la cadena.

+0

+1 para escribir más rápido. – NullRef

+0

Usando .inspect trabajado, genio puro !! Y, lamentablemente, para mí, una solución bastante simple ... Voy a jugar con el resto de su sugerencia, ya que podría ser útil en otro momento. Gracias Emily! – JoMojo

0

Para modificar las matrices de la manera que desee, utilice map y gsub.

a = ["ee", "3/4\"", "22\"", "22\""] 
a.map{|e| e.gsub(/"/,'')} 
=> ["ee", "3/4", "22", "22"] 

o

a.map{|e| e.gsub(/"/,'&#34')} 
=> ["ee", "3/4&#34", "22&#34", "22&#34"] 

Sin embargo, no estoy seguro de que esta es la mejor manera de lograr su objetivo final.

+0

No estoy seguro de que sea la mejor manera, pero bueno es divertido aprender algo nuevo. :) Gracias por su respuesta NullRef. – JoMojo

Cuestiones relacionadas