在Python中,如果我想要获取字符串的前n个字符(不包括最后一个字符),我可以这样做:
output = 'stackoverflow'
print output[:-1]
有什么等价的Ruby代码吗?
我不想过于琐碎,但如果您想更像Python的方法,而不是做"StackOverflow"[0..-2]
,您可以做"StackOverflow"[0...-1]
获得相同的结果。
在Ruby中,使用三个点的范围会排除右侧参数,而使用两个点的范围会包括它。因此,在字符串切片的情况下,三个点更接近Python的语法。
您当前的 Ruby 并不会像您所描述的那样工作:它会截断最后一个字符,但同时也会将字符串反转。
与 Python 代码片段最接近的等效方式是:
output = 'stackoverflow'
puts output[0...-1]
您最初使用了..
而不是...
(如果您执行output [0..-2]
,它将起作用);前者是闭合-闭合的,后者是闭合-开放的。在Python中,切片和大多数其他东西都是闭合-开放的。
0..-2
)包括最后一个元素,而三个点形式(0...-1
)则不包括它。 - Chuck"stackoverflow"[0..-2]
will return "stackoverflo"
puts output.chop
或者
puts output.chop!
\r\n
结尾,chop
将会删除两个字符。 - Phil Rossoutput.chop