2010-06-17 55 views
10

在Ruby中, 我只是想擺脫一個字符串, 最後ñ字符,但下面不工作刪除字符串的最後n個字符(在Ruby中)的最佳方式是什麼?

"string"[0,-3] 

也不

"string".slice(0, -3) 

我想一個乾淨的方法,沒有任何像

"string".chop.chop.chop 

它可能是微不足道的,請任何人教我!謝謝!

+5

+1'chop.chop.chop'。讓我覺得你把斧頭拉到了弦的盡頭。 :-) – 2010-06-17 07:56:39

+1

'chop.chop.chop'還有另外一個缺點,就是要爲你的'String'增加三個副本。如果它只是''hello,world'',那麼這就沒有關係,但如果它是'File.read('/ some/really/big.file')',它會。 – 2010-06-17 14:12:35

+0

相反的任務,從字符串中獲取最後的'n'字節/字符/任何東西都有點棘手:http://stackoverflow.com/questions/2174767/extracting-the-last-n-characters-from-a-ruby -string – 2010-06-18 01:10:34

回答

19

您可以使用範圍。

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

你擊敗了我!你也可以這樣做切片:「字符串」.slice(0 ..- 4) – sosborn 2010-06-17 07:58:21

+3

[]和切片是synonums – Tao 2010-06-17 08:12:07

+0

嗨,謝謝!我剛剛發現我在[]或slice的第二個參數上犯了一個錯誤;它是長度而不是結束的位置...... – Tao 2010-06-17 08:13:17

9

你可以使用與GSUB正則表達式...

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

如果添加!slice它會破壞性刪除最後n個字符,而無需將其分配給另一個變量:

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

相比:

new = my_string.slice(0..-4) 
相關問題