从字符串中删除最后n个字符的首选方法是什么?
当前回答
str = str[0..-1-n]
不像[0…-n],它处理n=0的情况。
其他回答
你可以用
"string".sub!(/.{X}$/,'')
其中X是要删除的字符数。
或者赋值/使用结果:
myvar = "string"[0..-X]
其中X是要删除的字符数加1。
删除最后n个字符与保留第一个长度- n个字符相同。
主动支持包括String#first和String#last方法,它们提供了一种方便的方法来保留或删除第一个/最后一个n个字符:
require 'active_support/core_ext/string/access'
"foobarbaz".first(3) # => "foo"
"foobarbaz".first(-3) # => "foobar"
"foobarbaz".last(3) # => "baz"
"foobarbaz".last(-3) # => "barbaz"
如果你可以创建类方法,想要删除字符,试试这个:
class String
def chop_multiple(amount)
amount.times.inject([self, '']){ |(s, r)| [s.chop, r.prepend(s[-1])] }
end
end
hello, world = "hello world".chop_multiple 5
hello #=> 'hello '
world #=> 'world'
我建议你切。我认为其中一条评论中提到了它,但没有链接或解释,所以我认为它更好的原因如下:
它只是从字符串中删除最后一个字符,您不必为此指定任何值。
如果你需要删除一个以上的字符,那么chomp是你最好的选择。这是ruby文档对chop的看法:
返回一个删除了最后一个字符的新字符串。如果字符串 以\r\n结尾,两个字符都被删除。应用chop到空 String返回空字符串。String#chomp通常更安全 可选项,因为如果字符串不以。结尾,则保持字符串不变 记录分隔符。
虽然这主要用于删除分隔符,如\r\n,但我已经使用它来删除一个简单字符串的最后一个字符,例如s使单词成为单数。
如果您正在使用rails,请尝试:
"my_string".last(2) # => "ng"
(编辑)
获取没有最后2个字符的字符串:
n = "my_string".size
"my_string"[0..n-3] # => "my_stri"
注意:最后一个字符串字符是n-1。为了去掉最后2,我们用n-3。
推荐文章
- 我应该如何从字符串中删除所有的前导空格?- - - - - -斯威夫特
- 了解Gemfile。锁文件
- 如何确定一个数组是否包含另一个数组的所有元素
- 将整数转换为字符串,以逗号表示千
- 将JavaScript字符串中的多个空格替换为单个空格
- printf()和puts()在C语言中的区别是什么?
- 是什么导致这个ActiveRecord::ReadOnlyRecord错误?
- jQuery -替换字符串中某个字符的所有实例
- Base64长度计算?
- 使用split("|")按管道符号拆分Java字符串
- 最好的打印散列的方法
- Std::cin输入空格?
- Rails:dependent =>:destroy VS:dependent =>:delete_all
- 我可以在不包含Ruby模块的情况下调用实例方法吗?
- 如何将新项目添加到哈希