2016-12-28 14 views
0

我有兩個類似的功能,以獲得迅速串的子(我只需要一個):如何在Swift 3中正確地保護子字符串函數?

func substring(start: Int, end: Int) -> String { 
    let c = self.characters 
    let r = c.index(c.startIndex, offsetBy: start)..<c.index(c.startIndex, offsetBy: end) 
    let substring = self[r] 
    return substring 
} 

和:

func substring(start: Int, end: Int) -> String { 
    let startIndex = self.index(self.startIndex, offsetBy: start) 
    let endIndex = self.index(self.startIndex, offsetBy: end)  
    return self[startIndex..<endIndex] 
} 

我怎樣才能正確地守護呢?這裏是主要的錯誤我可以在這裏:

fatal error: cannot decrement before startIndex

我需要能夠在所有類型的壞值發送到這個功能,如負start S和end S或end S中的小於start秒。爲了學習,讓我們假設有一個很好的理由讓函數中的無意義參數。

我已經嘗試了一些東西,比如:

func substring(start: Int, end: Int) -> String { 
    guard end > 0 else { 
     return "something" 
    } 

    let startIndex = self.index(self.startIndex, offsetBy: start) 
    let endIndex = self.index(self.startIndex, offsetBy: end)  
    return self[startIndex..<endIndex] 
} 

但這些要麼不工作或導致我的應用程序凍結。

回答

-1

你可以自己處理這個問題,但是如果你想更輕鬆地處理Swift字符串,我會建議你看看here

相關問題