Как удалить символ из элемента массива? - PullRequest
7 голосов
/ 10 марта 2012

У меня есть такой массив:

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

и я хотел бы удалить запятые \" или заменить на &#34, чтобы массив выглядел следующим образом:

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

или это:

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

Причина в том, что я пытаюсь передать этот массив из Ruby в JavaScript, но я получаю «Неопределенную строковую постоянную ошибку», и я просто не могу найти способ обойти это!

Это то, что я использую для передачи информации в JavaScript:

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

Ответы [ 2 ]

11 голосов
/ 10 марта 2012

Чтобы заменить каждый элемент в массиве измененной версией, такой как замена нежелательного символа, вы можете использовать функцию map!. Внутри блока используйте gsub для замены нежелательного символа ".

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

Однако вы также можете решить вашу проблему, используя c[1].inspect вместо c[1] при построении строки JavaScript. Если вы используете inspect, он напечатает строку с включенными в нее кавычками и обратный слеш, чтобы избежать кавычки внутри строки.

0 голосов
/ 10 марта 2012

Чтобы изменить массивы так, как вы хотите, используйте map и gsub.

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

или

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

Однако я не уверен, что это лучший способ для достиженияваша конечная цель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...