2010-06-17 48 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) 
相关问题