Параграфы (абзацы) и разрывы строк.

Cocoa

В этой статье описывается как определяются строки и абзацы по сепараторам и как вы можете разделить строку по пунктам.

Символы разделителей строк и абзацев

Есть несколько способов, в которых строки или абзацы, могут быть представлены. Исторически были использованы \n, \r, и \r\n. Юникод определяет однозначный разделитель пункта, U+2029 (для которого Cocoa обеспечивает постоянную NSParagraphSeparatorCharacter), и однозначную разделительную линию, U+2028 (для которой Cocoa обеспечивает постоянную NSLineSeparatorCharacter).

В системе текста Cocoa NSParagraphSeparatorCharacter обрабатывается последовательно, как разрыв абзаца, а NSLineSeparatorCharacter обрабатывается последовательно, как разрыв строки, то есть строки внутри абзаца. Однако в других контекстах, есть несколько вариантов относительно того, как эти символы будут восприняты. Например POSIX уровень программного обеспечения, часто признает только \n, как перенос. В некоторых старых Macintosh, программное обеспечение распознает только \r, а некоторое программное обеспечение для Windows распознает только \r\n. Нередко бывает, что нет никакого различия между строками и абзацами.

Какой символ линия или конца абзаца вы должны использовать, зависит от того, как ваши данные могут быть использованы и на каких платформах. Система текста Cocoa признает \n, \r, или \r\n как абзац-эквивалентный NSParagraphSeparatorCharacter. Когда Cocoa вставляет абзац, например, с insertNewline: она использует \n. Обычно NSLineSeparatorCharacter используется только для прерывания строк и не прерывают абзац, например, в insertLineBreak:, или для представления HTML элементов <br>.

Если ваши переносы предназначены для строк и не прерывают пункты, то вы должны как правило, использовать NSLineSeparatorCharacter. В противном случае, вы можете использовать \n, \r, или \r\n в зависимости от того, что другое программное обеспечение сможет воспринимать для оформления текста. По умолчанию выбор для Cocoa, как правило, \n.

Разделение строк "Параграфами"

Общий подход к разделению строки "в соответствии с параграфами":

NSArray *arr = [myString componentsSeparatedByString:@"\n"];

Данный вариант, игнорирует тот факт, что существует множество других способов, в которых абзацы или строки может быть перенесены ​​—\r, \r\n, или Unicode сепаратором. Вместо этого можно использовать методы, такие как lineRangeForRange: или getParagraphStart:end:contentsEnd:forRange: -чтобы учесть разнообразие возможных переносов, как показано в следующем примере.

NSString *string = /* принимает значение какого либо текста */;
unsigned length = [string length];
unsigned paraStart = 0, paraEnd = 0, contentsEnd = 0;
NSMutableArray *array = [NSMutableArray array];
NSRange currentRange;
while (paraEnd < length) {
    [string getParagraphStart:&paraStart end:&paraEnd
    contentsEnd:&contentsEnd forRange:NSMakeRange(paraEnd, 0)];
    currentRange = NSMakeRange(paraStart, contentsEnd - paraStart);
    [array addObject:[string substringWithRange:currentRange]];
}
 
 
homeЗаметили ошибкукарта сайта 
   Made on a Mac