@elda
Можно использовать метод suffix
для получения подстроки определенной длины и цикл для повторения этого процесса на всю строку:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
let word = "abcdefg" let chunkSize = 3 // или 5 var chunks = [String]() var startIndex = 0 while startIndex < word.count { let endIndex = min(startIndex + chunkSize, word.count) let chunk = word.suffix(word.count - startIndex).prefix(endIndex - startIndex) chunks.append(String(chunk)) startIndex += chunkSize } print(chunks) // ["abc", "def", "g"] |
В этом примере мы объявляем строку "abcdefg" и определяем размер кусков как 3 или 5 символов. Затем мы создаем массив для хранения результирующих кусков и устанавливаем начальный индекс в 0.
Затем мы начинаем цикл, который продолжается, пока начальный индекс меньше длины строки. Внутри цикла мы вычисляем конечный индекс путем добавления размера куска к начальному индексу, но при этом ограничиваем его длиной строки, чтобы не получить ошибку "Index out of range". Затем мы получаем подстроку с помощью метода suffix
и prefix
, добавляем ее в массив кусков и увеличиваем начальный индекс на размер куска.
В результате мы получаем массив кусков ["abc", "def", "g"], соответствующий нашему исходному слову.
@elda
Вот примеры для других значений размера кусков:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
let word = "abcdefghijk" let chunkSize = 5 var chunks = [String]() var startIndex = 0 while startIndex < word.count { let endIndex = min(startIndex + chunkSize, word.count) let chunk = word.suffix(word.count - startIndex).prefix(endIndex - startIndex) chunks.append(String(chunk)) startIndex += chunkSize } print(chunks) // ["abcde", "fghij", "k"] |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
let word = "abcdefghijklmnopqrstuvwxyz" let chunkSize = 5 var chunks = [String]() var startIndex = 0 while startIndex < word.count { let endIndex = min(startIndex + chunkSize, word.count) let chunk = word.suffix(word.count - startIndex).prefix(endIndex - startIndex) chunks.append(String(chunk)) startIndex += chunkSize } print(chunks) // ["abcde", "fghij", "klmno", "pqrst", "uvwxy", "z"] |
Таким образом, вы можете легко адаптировать код для разбиения строки на куски заданного размера в Swift.