2011-09-24 45 views
9

Tôi có một chuỗi, như thế này:Làm cách nào để tách dấu ngoặc đơn khỏi chuỗi trong Ruby?

và tôi muốn dải ngoặc từ chuỗi để có được một cái gì đó như thế này:

"yellow-corn-corn-on-the-cob" 

Tôi tin rằng bạn sẽ sử dụng gsub để thực hiện điều này , nhưng tôi không chắc chắn mẫu nào tôi cần phải khớp với dấu ngoặc đơn. Một cái gì đó như:

clean_string = old_string.gsub(PATTERN,"") 

Trả lời

21

Hãy thử điều này:

clean_string = old_string.gsub(/[()]/, "") 

Trên một mặt lưu ý, Rubular là tuyệt vời để kiểm tra biểu thức thông thường của bạn một cách nhanh chóng.

+0

Nice, tôi đã hoài nghi nhưng sau đó đã thử nó và nó làm việc. Nói chung, làm '()' không cần phải được thoát bên trong '[]'? –

+0

Thông thường các ký tự duy nhất không được xử lý theo nghĩa đen bên trong các lớp ký tự '[]' là], \, ^, và -, và thậm chí sau đó, carat và dấu gạch nối chỉ có vị trí (là char đầu tiên). – numbers1311407

+0

Tôi đã làm một bài kiểm tra nhanh, có vẻ như chỉ những người bạn phải thoát (ít nhất là trên ruby ​​1.9.2) là [,],/và \. –

27

Nếu không có biểu thức chính quy:

"yellow-corn-(corn-on-the-cob)".delete('()') #=> "yellow-corn-corn-on-the-cob" 
+0

rất dễ đọc và thuận tiện, bạn thậm chí không cần phải thoát khỏi các dấu ngoặc đơn như vậy '' [foo] '. Delete (' [] ') 'trả về đơn giản'' foo'' :) –

+0

+++ Đây là một cách đơn giản hơn nhiều và câu trả lời thích hợp hơn so với imo đã chọn. –

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