Предполагая, что вы хотите разбить по словам (разбить там, где есть пробел), вот алгоритм псевдо-кода:
1) Get Width as parameter
2) Declare String temp, int breakPoint, array list
3) For Each (character in String)
Add character to temp String
if (character is space)
set breakPoint to currentIndexInTemp
end if
if (temp String size > Width OR character is newline)
declare String newString
set newString equal to substring of temp(from 0 to breakPoint)
add newString to list
set temp to substring of temp(from breakPoint + 1 to end)
reset breakPoint
end if
end For Each
4) if (length of temp > 0)
add temp to list
end if
5) return list
Извините, если это ужасный псевдокод, я не пишу псевдокод часто (вообще-то, вообще), и я недостаточно знаком с Objective-C, чтобы писать его на языке.
Примечание
-
breakPoint
- это последнее вхождение пробела или разрыв в
символов, если длина слишком велика, вы хотите вырезать на
breakPoint
для предотвращения прерывания слова. Это индекс в
temp
Только строка, а не строка, которую вы разбиваете.
Может быть более простой способ сделать это в Objective-C, я не знаю, этот алгоритм основан на функции, которую я написал в Java, чтобы разбить строку на 80 символов.
EDIT
Добавлено тестирование новой линии. В моем примере, если это новая строка, разбейте ее там, слишком длинная или нет. Кроме того, когда вы разбиваете строку на массив (второй, если), вы захотите сбросить переменную breakPoint
. Я также согласен с тем, что для слишком больших порций текста это увеличит накладные расходы, у меня не было проблем с обработкой текста в несколько сотен символов. Хотя это было сделано на компьютере / ноутбуке.