2016-02-26 2 views
0

У меня есть массив, который имеет специальные символы в своих элементах. Допустим, массив_1 выглядит следующим образом:Элементы элементов Escape перед соединением

array_1 = %w(a b c d' e") 
#=> ["a", "b", "c", "d'", "e\""] 

Я присоединяюсь к ним в последующих частях кода. Как:

array_1.join(",") 
#=> "a,b,c,d',e\"" 

печати, строковые результаты:

a,b,c,d',e" 

Теперь мне нужно передать вышеуказанную строку в функции Java Script как сама строка. В основном, обернув его в одинарные кавычки. Нравится:

'a,b,c,d',e"' 

Это то место, где оно терпит неудачу. Мысли.

+0

Ты не можешь просто уйти одинарные кавычки? array1.collect {| c | c.gsub (/ '/, "\'")} .join (',') – ryancammer

+0

Какая строка будет корректной для вашей функции JavaScript? – Stefan

ответ

0

ли

%w(a' b c").map { |e| e.gsub /'|"/, '' } 

работу для вас?

+0

@tobmath. Нет, это не так. Что я пытался: 'logger.info (array_1.join (" ',' "))' 'array_1.map {| e | e.gsub/'| "/,' '}' 'logger.info (array1_join (", "))' Оба оператора регистратора дали мне то же самое, что и 'a, b, c, d', e" ' –

+0

Приведенный выше пример не модифицирует сам массив, поэтому, если вы вызываете' .map {| e | e.gsub/'| "/,' '}' содержимое массива1 does * not * change. Вместо этого используйте Array # map !, или 'array1 = array1.map {| e | e.gsub /' |" /, ''} ' – tobmatth

+0

@tobmath. Виноват. Я должен был это заметить сам. В любом случае, спасибо за обсуждение! –

0

Использование регулярного выражения для удаления одиночной и двойной кавычек будет выполнять эту работу. Проверьте код ниже.

array_1 = %w(a b c d' e") # your array 
str = array_1.join(",") 
str.gsub!(/\'|\"/, "") 
puts str # "a,b,c,d,e" 
1

Вы можете использовать String#inspect. Она возвращает последовательность символов, заключенная в кавычки со специальными символами, экранированными:

puts "someJavaScriptFunction(#{array_1.join(',').inspect});" 

Выход:

someJavaScriptFunction("a,b,c,d',e\""); 
Смежные вопросы