2012-10-15 67 views
9

Tôi có một chuỗi nhưRuby: Làm thế nào để loại bỏ dấu gạch chéo ngược sau một chuỗi?

"car\" 

mà tôi sẽ lưu trữ trong db sau đại lý. Tôi muốn xóa dấu gạch chéo ngược khỏi chuỗi trước khi lưu. Có cách nào tôi có thể làm điều đó trong ruby ​​hoặc trong postgres? Khi tôi cố gắng loại bỏ nó trong ruby, nó xem xét báo giá sau dấu gạch chéo ngược như một ký tự thoát.

+1

Bạn phải tăng gấp đôi dấu gạch chéo ngược trong chuỗi tìm kiếm của mình. –

Trả lời

24

Xem mã sau:

1.9.3p125 :022 > s = "cat\\" 
=> "cat\\" 
1.9.3p125 :023 > puts s 
cat\ 
=> nil 
1.9.3p125 :024 > s.chomp("\\") 
=> "cat" 
1.9.3p125 :025 > 
+0

Phương pháp chomp của Ruby được thiết kế cho mục đích này. http://www.ruby-doc.org/core-1.9.3/String.html#method-i-chomp – scarver2

2

Để loại bỏ dấu gạch chéo ngược:

"car\\".gsub!(/\\$/, "") 

Lưu ý rằng các dấu chéo ngược phải được thoát thân với một dấu gạch chéo.

2

Người ta không làm điều này nhiều, nhưng lớp String Ruby hỗ trợ:

irb(main):002:0> str = 'car\\' 
=> "car\\" 
irb(main):003:0> str[/\\$/] = '' 
=> "" 
irb(main):004:0> str 
=> "car" 

Đó là một tìm kiếm có điều kiện cho một dấu '\', và thay thế bằng một chuỗi rỗng.

+0

Vấn đề là ứng dụng đường ray của tôi nhận được một dấu gạch chéo ngược đơn lẻ từ giao diện người dùng (do nhầm lẫn bởi người dùng) mà tôi cần lưu trữ trong cơ sở dữ liệu. Bất kỳ manh mối về cách đối phó với tình huống như vậy? – Ari53nN3o

+0

Đó là ví dụ minh họa. Một dấu gạch chéo ngược đơn lẻ. 'car \\' tạo một chuỗi chứa dấu gạch chéo ngược đơn lẻ. Dòng cuối cùng cho thấy dấu gạch chéo ngược đơn lẻ bị loại bỏ. –

0
puts '"car\"'.gsub(/\\(")?$/, '\1') 

sẽ làm điều đó, nhưng, dấu gạch chéo ở cuối luôn là dấu chấm?

+0

có, nó luôn luôn theo sau với một trích dẫn .. – Ari53nN3o

+1

'/ \\ (") * $/'là một cách rất vụng về xử lý một dấu trích dẫn có thể có, và thực sự có nghĩa là" không hoặc nhiều hơn "dấu ngoặc kép sau. –

+0

@ the_Tin_Man: bạn đúng, ý tôi là (") ?, không (") * – thebugfinder

-1

Xem những gì các hoạt động

str.dump 

nói, và sau đó cố gắng để hoạt động trên đó.

+0

Điều gì sẽ xảy ra nếu chuỗi * không * có dấu gạch chéo ngược? –

+0

Chắc chắn, chúng ta sẽ cần biết chuỗi này trông như thế nào một cách chi tiết , khi nói đến ruby? "\" car \\ "," \ "car \\\" "? – Adam

+0

@theTinMan trong tài liệu, nó nói rằng nil sẽ được trả lại '' 'trở lại str, hoặc nil nếu không có thay thế được thực hiện. Nếu không có khối và không có thay thế được đưa ra, một điều tra viên được trả lại để thay thế.''' http://ruby-doc.org/core-2.3.1/String.html – DevJ3rry

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