2010-03-20 45 views

回答

11

我不希望太挑剔,但如果你想更加像Python」而不是做"StackOverflow"[0..-2]你可以做"StackOverflow"[0...-1]獲得同樣的結果。

在Ruby中,有3個點的範圍排除了正確的參數,其中有兩個點的範圍包含它。所以,在字符串切片的情況下,這三個點更接近Python的語法。

+0

現在,這讓我再次閱讀了Range的文檔,並第一次瞭解了三重點。太好了! – hermannloose 2010-03-20 21:46:37

+0

我對兩點與三點的抱怨是很容易錯誤/錯計點數,增加了出錯的機率或使維護變得更加困難。在我看來,使用三者更多的是好奇心,因爲它確實無助於我編寫更清晰的代碼。 – 2010-03-20 23:33:18

+0

@ Z.E.D .:三點範圍的用例之一是在float上運行一個case語句。如果有的話,請參閱Pickaxe書籍第97頁的Ruby 1.9。 – 2010-03-21 00:09:51

4

您當前的Ruby沒有做你的描述:它切斷的最後一個字符,但它也反轉的字符串。

最接近相當於Python的片斷將

output = 'stackoverflow' 
puts output[0...-1] 

您最初使用..代替...(如果你沒有output[0..-2]這將工作);前者是封閉式的,後者是封閉式的。 Python中的切片和其他所有東西都是封閉式的。

+0

您可以選擇範圍是否包含其結尾。兩個點('0 ..- 2')包含最後一個元素,而三點形式('0 ...- 1')將其排除。 – Chuck 2010-03-20 21:45:47

+0

@抓,謝謝。我只是編輯說出來。 :) – 2010-03-20 21:48:11

1

如果你想要做的就是刪除字符串的最後一個字符,你可以使用「砍」的方法,以及:

puts output.chop 

puts output.chop! 
+1

請注意,如果字符串以'\ r \ n'結尾,'chop'將刪除兩個字符。 – 2010-03-20 21:44:12

1

如果你只是想刪除最後一個字符,你也可以做

output.chop 
相關問題