2012-03-09 11 views
6

devo un array come questo:Come rimuovere un carattere dall'elemento dell'array?

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

e mi piacerebbe rimuovere le virgole, \" o sostituire quello con &#34 in modo che l'array è simile al seguente:

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

o del presente :

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

Il motivo è che sto provando a passare quell'array da Ruby a JavaScript, ma continuo a ricevere una "U" errore costante di stringa terminata "e non riesco a capire come aggirarlo!

questo è quello che sto usando per passare le informazioni per JavaScript:

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

C'è un motivo particolare non si sta usando JSON? –

+1

Sì .. Non ho idea di cosa sia JSON ... :) Sono abbastanza nuovo in tutte queste cose di programmazione e quindi la mia conoscenza è piuttosto limitata, sfortunatamente. Guarderò in JSON e vedrò se ciò potrebbe aiutare. – JoMojo

+0

L'entità '& #' non dovrebbe finire con un punto e virgola? (ad esempio, """) –

risposta

10

per sostituire ogni elemento di un array con una versione modificata, come ad esempio la sostituzione del carattere indesiderato, è possibile utilizzare la funzione map! . All'interno del blocco, utilizzare gsub per sostituire il carattere non desiderato ".

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"] 

Tuttavia, si può anche essere in grado di risolvere il problema utilizzando c[1].inspect invece di c[1] quando si costruisce la stringa JavaScript. Se si utilizza inspect, verrà stampata la stringa con le citazioni allegate incluse e la barra inversa per evitare la citazione all'interno della stringa.

+0

+1 per la digitazione più veloce. – NullRef

+0

Uso di .inspect funzionante, puro genio !! E purtroppo per me una soluzione piuttosto semplice ... giocherò con il resto del tuo suggerimento in quanto potrebbe tornare utile in un altro momento. Grazie Emily! – JoMojo

0

Per modificare gli array nel modo desiderato utilizzare map e 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"] 

Tuttavia, non sono sicuro che questo è il modo migliore per raggiungere il vostro obiettivo finale.

+0

Non sono sicuro che sia il modo migliore, ma hey è divertente imparare qualcosa di nuovo. :) Grazie per la tua risposta NullRef. – JoMojo

Problemi correlati