2012-03-09 18 views
6

Mam tablicę takiego:Jak usunąć znak z elementu tablicy?

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

i chciałbym albo usunąć przecinki, \" lub wymienić, że przy &#34 tak, że tablica wygląda następująco:

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

czy to :

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

Powodem jest to, że próbuję przekazać tę tablicę z Ruby do JavaScript, ale ciągle otrzymuję "U" nterminated ciąg stały błąd "i po prostu nie mogę wymyślić sposób wokół niego!

To co używam do przekazania informacji na javascript:

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

Czy istnieje jakiś szczególny powód, dla którego nie używasz JSON? –

+1

Tak ... Nie mam pojęcia, czym jest JSON ... :) Jestem całkiem nowy w tym wszystkim programowaniu, więc moja wiedza jest dość ograniczona, niefortunna. Zajrzę do JSON i zobaczę, czy to mogłoby pomóc. – JoMojo

+0

Czy obiekt "& #" nie powinien kończyć się średnikiem? (np. '"') –

Odpowiedz

10

Aby wymienić każdy element w tablicy ze zmodyfikowanej wersji, takie jak zastąpienie niechciany znak, można użyć funkcji map! . Wewnątrz bloku użyj gsub, aby zastąpić niechcianą postać ".

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

Można jednak również być w stanie rozwiązać problemu przy użyciu c[1].inspect zamiast c[1] budując swój ciąg JavaScript. Jeśli użyjesz funkcji inspect, wydrukuje ciąg znaków wraz z załączonymi cytatami, a także ukośnik odwrotny, aby uniknąć cytatu wewnątrz łańcucha.

+0

+1 za pisanie szybciej. – NullRef

+0

Korzystanie .inspect działał, czysty genialny !! I niestety dla mnie całkiem proste rozwiązanie ... Będę się bawił z resztą twoich sugestii, ponieważ może się przydać w innym czasie. Dzięki Emily! – JoMojo

0

Aby zmodyfikować tablice tak, jak chcesz, użyj map i gsub.

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

lub

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

Jednak nie jestem pewien, że to najlepszy sposób, aby osiągnąć swój cel końcowy.

+0

Nie jestem pewien, czy to najlepszy sposób, ale hej, to fajna nauka czegoś nowego. :) Dziękuję za odpowiedź NullRef. – JoMojo