2012-03-09 52 views
6

我有一個這樣的數組:如何從數組元素中移除一個字符?

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

,我想要麼刪除逗號,\"或更換與&#34使陣列看起來像這樣:

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

或本:

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

原因是,我試圖從Ruby傳遞數組到JavaScript,但我不斷得到一個「U終止字符串常量錯誤「,我只是無法找出解決方法!

這是我用來傳遞信息給JavaScript什麼:

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

有什麼特別的原因,你不使用JSON? – 2012-03-09 21:16:23

+1

是的..我不知道JSON是什麼...... :)在編程方面我都很新穎,所以我的知識非常有限,很不幸。我會研究JSON,看看是否有幫助。 – JoMojo 2012-03-09 21:20:53

+0

'&#'實體不應該以分號結尾嗎? (例如,'"') – 2012-03-09 21:32:21

回答

10

要與修改後的版本替換每個數組中的元素,如更換不必要的字符,你可以使用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,它將打印包含括號的引號的字符串,並使用反斜槓來轉義字符串內的引號。

+0

+1,用於打字更快。 – NullRef 2012-03-09 21:28:44

+0

使用.inspect工作,純粹的!可悲的是,對我來說,很簡單的解決方案......我會利用其餘的建議,因爲它可能會在另一時間派上用場。謝謝Emily! – JoMojo 2012-03-09 21:33:22

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

但是,我不知道這是爲了實現你的最終目標的最佳途徑。

+0

我不確定這是最好的方式,但嘿這很有趣學習新的東西。 :)感謝您的答覆NullRef。 – JoMojo 2012-03-09 21:38:10

相關問題