Objective-C - заменить все двойные новые строки на 1 новую строку? - PullRequest
1 голос
/ 21 ноября 2011

У меня есть строка html, и я хочу разрешить 1 разрыв строки за раз.Я пытаюсь заменить все "\ n \ n" на "\ n".Но в конце я получаю двойной разрыв строки.

Можно ли напечатать содержимое строки, чтобы увидеть, что это за содержимое, поэтому вместо перехода к новой строке выведите "\ n" вокно вывода.

while ((range = [html rangeOfString:@"\n\n"]).length) 
{
   [html replaceCharactersInRange:range withString:@"\n"];
}

РЕДАКТИРОВАТЬ: HTML был преобразован в обычный текст (поэтому в строке нет тегов BR)

Ответы [ 2 ]

3 голосов
/ 21 ноября 2011

Если у вас есть неопределенное количество новых строк, которые вы хотите сжать в одну, вы можете использовать NSRegularExpression. Что-то вроде:

NSRegularExpression *squeezeNewlines = [NSRegularExpression regularExpressionWithPattern:@"\n+" options:0 error:nil];
[squeezeNewlines replaceMatchesInString:html options:0 range:NSMakeRange(0, [html length]) withTemplate:@"\n"];

(Написано в моем браузере и не тестировалось, поскольку у меня нет под рукой недавнего Mac, поэтому дайте мне знать, если я что-то испортил.)

1 голос
/ 21 ноября 2011

Почему бы вам не использовать вместо:

- (NSUInteger)replaceOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)opts range:(NSRange)searchRange
...