@Lexemz

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

Задача: Есть строка с произвольной длиной, состоящая из чисел

Нужно разделить эту строку на массив подстрок с указанием длины этих подстрок
"123456789" (длина подстроки 4) -> ["1234", "5678", "9"]

Придумал такое решение:
var str = "123456789"
let sz = 4
for chunk in stride(from: sz, to: str.count, by: sz).reversed() {
    str.insert(" ", at: str.index(str.startIndex, offsetBy: chunk))
}
let chunksOfString = str.components(separatedBy: " ")


Вопрос: можно ли как-то менее варварски разбить строку на массив подстрок с определенной длинной?
  • Вопрос задан
  • 692 просмотра
Решения вопроса 1
nazares
@nazares
Software Engineer
extension String {
    func components(withLength length: Int) -> [String] {
        return stride(from:0, to: self.count, by: length).map {
            let start = self.index(self.startIndex, offsetBy: $0)
            let end = self.index(start, offsetBy: length, limitedBy: self.endIndex) ?? self.endIndex
            return String(self[start ..< end])
        }
    }
}

let str = "123456789"
let comp1 = str.components(withLength: 4)
let comp2 = str.components(withLength: 3)

dump(comp1)
dump(comp2)

Выхлоп 609a7c8be66d9151130787.png
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы