2012-03-09 33 views
6

Tôi có một mảng như thế này:Làm cách nào để xóa ký tự khỏi phần tử mảng?

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

và tôi muốn hoặc loại bỏ các dấu phẩy, \" hoặc thay thế mà với &#34 để mảng trông như thế này:

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

hay này :

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

Lý do là tôi đang cố gắng chuyển mảng đó từ Ruby sang JavaScript, nhưng tôi tiếp tục nhận được "U lỗi liên tục chuỗi chưa hoàn thành "và tôi không thể tìm ra cách nào xung quanh nó!

Đây là những gì tôi đang sử dụng để vượt qua các thông tin để JavaScript:

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

Có lý do cụ thể nào mà bạn không sử dụng JSON không? –

+1

Có .. Tôi không biết JSON là gì ... :) Tôi khá mới ở tất cả các công cụ lập trình này và vì vậy kiến ​​thức của tôi khá hạn chế, không may. Tôi sẽ xem xét JSON và xem liệu điều đó có thể giúp ích gì không. – JoMojo

+0

Không phải thực thể '& # 'sẽ kết thúc bằng dấu chấm phẩy? (ví dụ: '" ') –

Trả lời

10

Để thay thế từng phần tử trong một mảng với một phiên bản sửa đổi, chẳng hạn như thay thế các nhân vật không mong muốn, bạn có thể sử dụng chức năng map! . Bên trong khối, sử dụng gsub để thay thế ký tự không mong muốn ".

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

Tuy nhiên, bạn cũng có thể để giải quyết vấn đề của bạn bằng cách sử dụng c[1].inspect thay vì c[1] khi xây dựng chuỗi JavaScript của bạn. Nếu bạn sử dụng kiểm tra, nó sẽ in chuỗi với dấu ngoặc kèm theo bao gồm, và dấu gạch chéo ngược để thoát khỏi trích dẫn bên trong chuỗi.

+0

+1 để nhập nhanh hơn. – NullRef

+0

Sử dụng .inspect đã hoạt động, Pure genious !! Và thật đáng buồn cho tôi giải pháp khá đơn giản ... Tôi sẽ chơi xung quanh với phần còn lại của đề xuất của bạn vì nó có thể có ích vào lúc khác. Cảm ơn Emily! – JoMojo

0

Để sửa đổi các mảng theo cách bạn muốn sử dụng map và gsub.

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

hoặc

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

Tuy nhiên, tôi không chắc chắn đây là cách tốt nhất để đạt được mục tiêu cuối cùng của bạn.

+0

Tôi không chắc chắn đó là cách tốt nhất hoặc nhưng hey nó là thú vị học tập một cái gì đó mới. :) Cảm ơn bạn đã trả lời NullRef. – JoMojo

Các vấn đề liên quan