#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")