从字符串中删除最后n个字符的首选方法是什么?
当前回答
如果你可以创建类方法,想要删除字符,试试这个:
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使单词成为单数。
使用正则表达式:
str = 'string'
n = 2 #to remove last n characters
str[/\A.{#{str.size-n}}/] #=> "stri"
name = "my text"
x.times do name.chop! end
在控制台:
>name = "Nabucodonosor"
=> "Nabucodonosor"
> 7.times do name.chop! end
=> 7
> name
=> "Nabuco"
如果你可以创建类方法,想要删除字符,试试这个:
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'
str = str[0..-1-n]
不像[0…-n],它处理n=0的情况。
推荐文章
- 我如何在Ruby中解析YAML文件?
- 我如何分割一个字符串由一个多字符分隔符在c# ?
- 如何删除Python中的前导空白?
- 如何在Typescript中解析JSON字符串
- 如何分割逗号分隔的字符串?
- Java字符串—查看字符串是否只包含数字而不包含字母
- 用javascript检查输入字符串中是否包含数字
- Rails中的OO设计:在哪里放置东西
- Java:检查enum是否包含给定的字符串?
- 用PHP删除字符串的前4个字符
- 如何从字符串的开始或结束删除所有空白?
- 字符串到JS中的对象
- 为什么Python的原始字符串不能以一个反斜杠结尾?
- 我如何读整个文件到性病::字符串在c++ ?
- 从以特定字符开头的字符串中获取子字符串