2010-06-17 40 views
10

trong Ruby, Tôi chỉ muốn thoát khỏi n ký tự cuối cùng của một chuỗi, nhưng sau đó không làm việccách tốt nhất để loại bỏ n ký tự cuối cùng của chuỗi (trong Ruby) là gì?

"string"[0,-3] 

cũng không

"string".slice(0, -3) 

Tôi muốn một phương pháp sạch sẽ, không phải bất cứ điều gì như

"string".chop.chop.chop 

nó có thể tầm thường, vui lòng bất cứ ai dạy tôi! cảm ơn!

+5

+1 cho 'chop.chop.chop'. Làm cho tôi nghĩ về bạn khi lấy một cái rìu đến cuối sợi dây. :-) –

+1

'chop.chop.chop' có thêm bất lợi khi tạo thêm ba bản sao của' Chuỗi'. Nếu nó chỉ là "hello, world", thì điều đó sẽ không thành vấn đề, nhưng nếu nó là 'File.read ('/ some/really/big.file')', nó sẽ. –

+0

Nhiệm vụ ngược lại, nhận được 'n' byte/ký tự/chuỗi cuối cùng từ chuỗi của bạn hơi phức tạp: http://stackoverflow.com/questions/2174767/extracting-the-last-n-characters-from-a-ruby -string –

Trả lời

19

Bạn có thể sử dụng dải ô.

"string"[0..-4] 
+0

Bạn đánh bại tôi với nó! Bạn cũng có thể làm điều này với slice: "string" .slice (0 ..- 4) – sosborn

+3

[] và slice là synonums – Tao

+0

hi, cảm ơn! Tôi chỉ thấy rằng tôi đã mắc sai lầm về tham số thứ hai của [] hoặc slice; nó dài hơn vị trí kết thúc ... – Tao

9

Bạn có thể sử dụng một regex với gsub ...

"string".gsub(/.{3}$/, '') 
1

Nếu bạn thêm một !-slice nó triệt tiêu sẽ loại bỏ các ký tự n cuối cùng mà không cần phải gán nó vào một biến khác:

my_string.slice!(my_string.length-3,my_string.length) 

so với:

new = my_string.slice(0..-4) 
Các vấn đề liên quan