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

Для разделения строки на массив строк с определенной длиной в языке программирования Swift вы можете воспользоваться несколькими подходами. Вот несколько вариантов:

1. Использование цикла и метода split():

func splitStringWithLength(string: String, length: Int) -> [String] {
    var result: [String] = []
    var currentIndex = string.startIndex
    
    while currentIndex < string.endIndex {
        let endIndex = string.index(currentIndex, offsetBy: length, limitedBy: string.endIndex) ?? string.endIndex
        let substring = string[currentIndex..<endIndex]
        result.append(String(substring))
        currentIndex = endIndex
    }
    
    return result
}

Этот метод splitStringWithLength() принимает два параметра: исходную строку и желаемую длину каждой подстроки. Он использует цикл, чтобы перебирать строку и разделять ее на подстроки указанной длины, добавляя каждую подстроку в массив result. Индекс currentIndex используется для отслеживания текущей позиции в строке, а метод string.index(_:offsetBy:limitedBy:) используется для получения индекса конца каждой подстроки. Функция возвращает массив полученных подстрок.

Пример использования:

let inputString = "Hello, world!"
let splitArray = splitStringWithLength(string: inputString, length: 5)
print(splitArray) // ["Hello", ", wor", "ld!"]

2. Использование метода enumerated() и reduce():

func splitStringWithLength(string: String, length: Int) -> [String] {
    return string.enumerated().reduce([""]) { (result, current) in
        var mutableResult = result
        let (index, character) = current

        if index % length == 0 && index != 0 {
            mutableResult.append(String(character))
        } else {
            mutableResult[mutableResult.count - 1] += String(character)
        }

        return mutableResult
    }
}

Этот метод splitStringWithLength() также принимает два параметра: исходную строку и желаемую длину каждой подстроки. Он использует метод enumerated() для получения пар (индекс, символ) из строки и reduce() для преобразования полученных пар в массив подстрок. Функция проверяет, делится ли текущий индекс на желаемую длину без остатка, и, в зависимости от этого, либо создает новую подстроку, либо добавляет символ к текущей подстроке. Результатом работы функции является массив полученных подстрок.

Пример использования:

let inputString = "Hello, world!"
let splitArray = splitStringWithLength(string: inputString, length: 5)
print(splitArray) // ["Hello", ", wor", "ld!"]

Оба варианта позволяют разделить исходную строку на подстроки с определенной длиной. Выбор метода зависит от ваших предпочтений и ситуации, в которой вы используете эту функциональность.