2013-05-24 4 views
2

Я пытаюсь удалить несколько строк новой строки/возврат каретки из строки, которая может отображаться в любом шаблоне (строки из API-интерфейсов социальной сети - TW, FB, YT). Мне удалось удалить почти все комбинации, но я не могу удалить несколько повторений «\ r \ n» или «\ n \ r».Удалить несколько новых строк/возврат каретки из строки

Что бы я хотел: «Линия1 \ r \ nLine \ n \ n \ n \ n \ n \ n \ n \ nЛиния3 \ r \ r \ r \ rLine \ r \ n \ "line5 \" \ п \ г \ п \ rLine6 \ rLine7 \ г \ п \ г \ nLine8 \ г \ г \ г \ г \ г \ г \ г \ г \ п \ N \ N \ rLine9 \ N \ N \ п \ п \ п \ г \ г \ г \ г \ nLine10 \ nLine11 \ п \ п \ п \ п»

стать:

Line1 
Line2 
Line3 
Line4 
"Line5" 
Line6 
Line7 
Line8 
Line9 
Line10 
Line11 

, но в настоящее время я получаю:

Line1 
Line2 
Line3 
Line4 
"Line5" 

Line6 
Line7 

Line8 
Line9 
Line10 
Line11 

Это код, который у меня есть:

NSMutableString *testString = [[NSMutableString alloc]init]; 
[testString appendString:@"Line1\r\nLine2\n\n\n\n\n\n\n\nLine3\r\r\r\r\rLine4\r\n\"Line5\"\n\r\n\rLine6\rLine7\r\n\r\nLine8\r\r\r\r\r\r\r\r\n\n\n\rLine9\n\n\n\n\n\r\r\r\r\nLine10\nLine11\n\n\n\n"]; 

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(\r+)(\\n+)?(\r+)?|(\\n+)(\r+)?(\\n+)?|(\\n\r+)|(\r\\n+)" options:NSRegularExpressionCaseInsensitive error:nil]; 

[regex replaceMatchesInString:testString options:0 range:NSMakeRange(0, [testString length]) withTemplate:@"\n"]; 
+4

Я бы подумал, что ios также принимает классы символов и будет использовать это регулярное выражение: '[\ r \\ п] + '. В принципе, он заменит в следующем коде любые последующие '\ r' и' \\ n' на '\ n'. – Jerry

+0

@ Джерри, вы должны это ответить –

ответ

2

Я попробовал это на сайте проверки регулярных выражений, и она работает ->(\\r|\\n)+ или если вам не нужно, чтобы захватить (?:\\r|\\n)+ Ну это будет разным числом косых черт в зависимости от того, являются ли они фактический возврат каретки или просто \ r и \ n (плюс вам нужно удвоить количество косых черт для помещения их в литерал NSString)

+0

И это решение, и решение Джерри выше работают отлично, спасибо! – vangras

+0

Я не хотел срывать Джерри, если он работал. Я попробовал это на сайте, и он также заменил все «n» в «Линии», поэтому я немного изменил его. – borrrden

Смежные вопросы