Я пытаюсь сделать простую вещь на самом деле - извлеките жестко закодированные части строки. Например, из «123» мне нужно «1», от «0123» - «01». Теперь я только что прочитал, наверное, все учебники по [довольно странно с моей точки зрения] реализации Range в Swift, но до сих пор не может получить этот простой код работает, как я хочу, чтобы:String.Substring в Swift 3, когда start = end
let start2 = string.startIndex
let end2 = string.index(string.endIndex, offsetBy: -3)
minutes = Int(string.substring(with: start2..<end2))
Проблема заключается в том, что в случае «123» start2 равен end2, а подстрока возвращает nil в этом случае. Есть идеи?
P.S. Великие боги, эта операция была тривиальной даже в ассемблере 20 лет назад
Проблема не 'подстрока()' (который возвращает пустую строку в вашем дело). Но 'Int (" ")' возвращает 'nil' для пустой строки. - Какой результат вы ожидаете, если start2 == end2? –
Что я ожидаю? 1 символ конечно –
'.. <' создает * полуоткрытый * диапазон *, который * исключает * верхнюю границу. С закрытым диапазоном 'start2 ... end2' вы получите один символ. –