在Python,如果我要得到一個字符串減去最後一個字符的第n個字符,我做的:什麼是Python的輸出[: - 1]的Ruby等價物?
output = 'stackoverflow'
print output[:-1]
什麼是Ruby的相同呢?
在Python,如果我要得到一個字符串減去最後一個字符的第n個字符,我做的:什麼是Python的輸出[: - 1]的Ruby等價物?
output = 'stackoverflow'
print output[:-1]
什麼是Ruby的相同呢?
我不希望太挑剔,但如果你想更加像Python」而不是做"StackOverflow"[0..-2]
你可以做"StackOverflow"[0...-1]
獲得同樣的結果。
在Ruby中,有3個點的範圍排除了正確的參數,其中有兩個點的範圍包含它。所以,在字符串切片的情況下,這三個點更接近Python的語法。
"stackoverflow"[0..-2]
將返回"stackoverflo"
您當前的Ruby沒有做你的描述:它切斷的最後一個字符,但它也反轉的字符串。
最接近相當於Python的片斷將
output = 'stackoverflow'
puts output[0...-1]
您最初使用..
代替...
(如果你沒有output[0..-2]
這將工作);前者是封閉式的,後者是封閉式的。 Python中的切片和其他所有東西都是封閉式的。
您可以選擇範圍是否包含其結尾。兩個點('0 ..- 2')包含最後一個元素,而三點形式('0 ...- 1')將其排除。 – Chuck 2010-03-20 21:45:47
@抓,謝謝。我只是編輯說出來。 :) – 2010-03-20 21:48:11
如果你想要做的就是刪除字符串的最後一個字符,你可以使用「砍」的方法,以及:
puts output.chop
或
puts output.chop!
請注意,如果字符串以'\ r \ n'結尾,'chop'將刪除兩個字符。 – 2010-03-20 21:44:12
如果你只是想刪除最後一個字符,你也可以做
output.chop
現在,這讓我再次閱讀了Range的文檔,並第一次瞭解了三重點。太好了! – hermannloose 2010-03-20 21:46:37
我對兩點與三點的抱怨是很容易錯誤/錯計點數,增加了出錯的機率或使維護變得更加困難。在我看來,使用三者更多的是好奇心,因爲它確實無助於我編寫更清晰的代碼。 – 2010-03-20 23:33:18
@ Z.E.D .:三點範圍的用例之一是在float上運行一個case語句。如果有的話,請參閱Pickaxe書籍第97頁的Ruby 1.9。 – 2010-03-21 00:09:51