从字符串中删除最后n个字符的首选方法是什么?


当前回答

irb> 'now is the time'[0...-4]
=> "now is the "

其他回答

查看slice()方法:

http://ruby-doc.org/core-2.5.0/String.html#method-i-slice

name = "my text"
x.times do name.chop! end

在控制台:

>name = "Nabucodonosor"
 => "Nabucodonosor" 
> 7.times do name.chop! end
 => 7 
> name
 => "Nabuco" 

我建议你切。我认为其中一条评论中提到了它,但没有链接或解释,所以我认为它更好的原因如下:

它只是从字符串中删除最后一个字符,您不必为此指定任何值。

如果你需要删除一个以上的字符,那么chomp是你最好的选择。这是ruby文档对chop的看法:

返回一个删除了最后一个字符的新字符串。如果字符串 以\r\n结尾,两个字符都被删除。应用chop到空 String返回空字符串。String#chomp通常更安全 可选项,因为如果字符串不以。结尾,则保持字符串不变 记录分隔符。

虽然这主要用于删除分隔符,如\r\n,但我已经使用它来删除一个简单字符串的最后一个字符,例如s使单词成为单数。

你可以用

 "string".sub!(/.{X}$/,'')

其中X是要删除的字符数。

或者赋值/使用结果:

myvar = "string"[0..-X]

其中X是要删除的字符数加1。

x = "my_test"
last_char = x.split('').last