Я получаю простой текст из xml-потока и хочу знать, есть ли способ разбить этот текст на абзацы. Я пытаюсь:
*htmlbody = [item.text stringByReplacingOccurrencesOfString:@"\n" withString:@"<br />"];
но это не работает.
Я получаю простой текст из xml-потока и хочу знать, есть ли способ разбить этот текст на абзацы. Я пытаюсь:
*htmlbody = [item.text stringByReplacingOccurrencesOfString:@"\n" withString:@"<br />"];
но это не работает.
NSArray *paragraphs = [item.text componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
Дает вам массив строк (по одной на абзац) для всех вариантов завершения строки.
Используйте enumerateSubstringsInRange:options:usingBlock:
с NSStringEnumerationByParagraphs
.
Первый и самый распространенный подход:
NSArray *arr = [myString componentsSeparatedByString:@"\n"];
Однако при этом игнорируется тот факт, что существует ряд других способов представления абзаца или разрыва строки в строке — \r, \r\n или разделители Unicode.
Из Руководства по программированию строк от Apple:
NSString *string = /* assume this exists */;
unsigned length = [string length];
unsigned paraStart = 0, paraEnd = 0, contentsEnd = 0;
NSMutableArray *array = [NSMutableArray array];
NSRange currentRange;
while (paraEnd < length) {
[string getParagraphStart:¶Start end:¶End
contentsEnd:&contentsEnd forRange:NSMakeRange(paraEnd, 0)];
currentRange = NSMakeRange(paraStart, contentsEnd - paraStart);
[array addObject:[string substringWithRange:currentRange]];
}
Это даст вам массив NSString
с вашими абзацами.
Похоже, вы на правильном пути. Или, по крайней мере, это определенно подход, который я бы попробовал.
Возможно, ваши новые строки содержат возврат каретки, поэтому попробуйте \r\n или, возможно, даже \n\n, но без фактического содержимого, которое вы пытаетесь проанализировать, трудно понять, что вы должны использовать в качестве разделителя.
Взгляните на документацию NSString для componentSeperatedByString:
NSString *list = @"Norman, Stanley, Fletcher";
NSArray *listItems = [list componentsSeparatedByString:@", "];