2016-03-15 27 views
-1

removeRange:給我一個空字符串Swift 2我不明白爲什麼。 蘋果說明文件中的示例是:removeRange()函數給出Swift 2中的空字符串

var welcome = "hello!"  
let range = welcome.endIndex.advancedBy(-6)..<welcome.endIndex 
welcome.removeRange(range) 
//I get "" as result rather than "hello" where the exclamation mark is removed 

可能是什麼問題?

+2

我想知道,你爲什麼認爲結果是錯的?你的預期結果是什麼?要刪除感嘆號,你應該使用'-1',而不是'-6'。 – Sulthan

回答

3

您從endIndex開始,然後返回 6.您現在處於單詞的開頭。然後,您將範圍設置爲結束索引,並刪除該範圍的內容:當然,沒有任何結果了。 :)

例如,它可能是這個:

var welcome = "hello!" 
let range = welcome.endIndex.advancedBy(-1)..<welcome.endIndex 
welcome.removeRange(range) 

或者這樣:

var welcome = "hello!" 
let range = welcome.startIndex.advancedBy(5)..<welcome.endIndex 
welcome.removeRange(range) 

有許多可能的組合。

+0

這是直接來自Apple文檔的示例:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html – irkinosor

+0

但看起來像你是正確的,也許是一個錯字來自Apple的文檔 – irkinosor

+1

您錯過了一個步驟。在「插入和刪除」中添加「there!」 「打招呼」,使其成爲「你好!」......然後他們用你的榜樣。他們的例子工作正常。 :) – Moritz

0

welcome.endIndex的值是6,因此advancedBy(-6)表示它變爲0.然後範圍= 0 .. < 6表示範圍覆蓋整個字符串。 如果你想要「你好」,那麼只改變advancedBy(-1)。

var welcome = "hello!" 
let range = welcome.endIndex.advancedBy(-1)..<welcome.endIndex 
welcome.removeRange(range) 
1

蘋果文檔中的字符串是 在刪除範圍時

VAR歡迎=「你好!」

+0

原始字符串是'var welcome =「hello」',但是它們在刪除範圍之前對其進行了修改。在使用'removeRange'時,字符串是'「你好」 – ColGraff

+0

是啊...我忘記提及謝謝:) – Jenny

相關問題