Вы можете просто использовать drop(while:)
:
let test = "QC00012345"
let num = test.dropFirst(2).drop { $0 == "0"}
Вы также можете создать ClosedRange<String>
и использовать его в качестве предиката, если не хотите отбрасывать первые два символа вручную:
let num = test.drop { !("1"..."9" ~= $0) }
print(num) // 12345
или проверьте, не содержит ли строка от 1 до 9 символ:
let num = test.drop { !"123456789".contains($0) }
редактирование / обновление:
Swift 5 или более поздняя версия
Использование свойства Character isWholeNumber
let num = test.drop { !$0.isWholeNumber || $0 == "0" }