Как разбить слово на несколько частей по 3 или 5 символов в swift?

Пользователь

от elda , в категории: Swift , год назад

Как разбить слово на несколько частей по 3 или 5 символов в swift?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dorothea_stoltenberg , год назад

@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"], соответствующий нашему исходному слову.

Пользователь

от krista , 2 месяца назад

@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.