如何从数组元素中删除字符?

时间:2012-03-09 21:12:39

标签: ruby arrays replace

我有一个这样的数组:

["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 个答案:

答案 0 :(得分:11)

要使用修改后的版本替换数组中的每个元素,例如替换不需要的字符,可以使用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"]

但是,在构建JavaScript字符串时,您也可以使用c[1].inspect代替c[1]来解决问题。如果你使用inspect,它将打印包含封闭引号的字符串,并使用反斜杠来转义字符串中的引号。

答案 1 :(得分:0)

要按照您希望的方式修改数组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"] 

但是,我不确定这是实现最终目标的最佳方式。