从字符串中删除最后n个字符的首选方法是什么?
当前回答
查看slice()方法:
http://ruby-doc.org/core-2.5.0/String.html#method-i-slice
其他回答
x = "my_test"
last_char = x.split('').last
str = str[0..-1-n]
不像[0…-n],它处理n=0的情况。
Ruby是2。5 +。
从Ruby 2.5开始,您可以使用delete_suffix或delete_suffix!以快速和可读的方式实现这一点。
关于方法的文档在这里。
如果你知道后缀是什么,这是惯用的(我认为,甚至比这里的其他答案更具可读性):
'abc123'.delete_suffix('123') # => "abc"
'abc123'.delete_suffix!('123') # => "abc"
它甚至比最上面的答案快得多(爆炸法几乎快了40%)。下面是相同基准测试的结果:
user system total real
chomp 0.949823 0.001025 0.950848 ( 0.951941)
range 1.874237 0.001472 1.875709 ( 1.876820)
delete_suffix 0.721699 0.000945 0.722644 ( 0.723410)
delete_suffix! 0.650042 0.000714 0.650756 ( 0.651332)
我希望这是有用的-注意,该方法目前不接受正则表达式,所以如果你不知道后缀,它是不可行的。然而,正如公认的答案(更新:在撰写本文时)所述,我认为这可能对一些人有用。
删除最后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"
如果您正在使用rails,请尝试:
"my_string".last(2) # => "ng"
(编辑)
获取没有最后2个字符的字符串:
n = "my_string".size
"my_string"[0..n-3] # => "my_stri"
注意:最后一个字符串字符是n-1。为了去掉最后2,我们用n-3。
推荐文章
- Printf与std::字符串?
- 是否可以在MiniTest中运行单个测试?
- 如何在Ruby中生成a和b之间的随机数?
- 不区分大小写的“in”
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 如何在PHP中截断字符串最接近于一定数量的字符?
- 无法安装gem -未能建立gem本地扩展-无法加载这样的文件——mkmf (LoadError)
- 如何在Ruby中创建文件
- 什么是Ruby文件。开放模式和选项?
- Ruby数组到字符串的转换
- 如何分割(块)一个Ruby数组成X元素的部分?
- Ruby中“or”和||的区别?
- 为什么在Java和。net中不能修改字符串?
- 如何创建一个日期对象从字符串在javascript
- 如何测试参数是否存在在轨道