2016-12-28 2 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 с и end с или end ы, которые меньше start s. В целях обучения давайте предположим, что есть веская причина допускать бессмысленные параметры в функции.

Я попробовал несколько вещей, как:

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

Вы можете справиться с этим сами, но я бы порекомендовал посмотреть here, если вам нужно более легкое время, связанное со Swift Strings.