Как извлечь значение конечного кода из заданных строк

#ios #swift #string #nsstring

Вопрос:

Как получить последнее кодовое значение строки

 Emp-Code-001 //Result 001

Sub-000123 //Result 000123

JOB-ABC-BJ-212-0012 //Result  0012
 

Как выбрать конечное значение кодового номера из заданных строк.

Вот что я сделал:

 func truncateHyphens(id: String){

    let finalString = id
    var trucatedString =id

    let substringToLastIndexOfChar = trucatedString.lastIndexOfCharacter("-") ?? 0
    let otherRange = trucatedString.index(trucatedString.startIndex, offsetBy: substringToLastIndexOfChar   1)..<trucatedString.endIndex
    trucatedString.removeSubrange(otherRange)
    print(finalString.replacingOccurrences(of: trucatedString, with: ""))

}


public extension String {
    func lastIndexOfCharacter(_ c: Character) -> Int? {
        guard let index = range(of: String(c), options: .backwards)?.lowerBound else
            { return nil }
        return distance(from: startIndex, to: index)
    }
}


self.truncateHyphens(id: "JOB-ABC-BJ-212-12340012") // Result 12340012
 

Это работает, но я чувствовал, что это не идеальное решение.

Как оптимизировать приведенный выше код?

Ответ №1:

 extension String {
    func separateCharacters(separator: Character) -> [String] {
        return self.split { $0 == separator }.map(String.init)
    }
}
 

Использование:

 print("JOB-ABC-BJ-212-12340012".separateCharacters(separator: "-").last) // Optional("12340012")