从字符串中删除多个换行符/回车符

时间:2013-05-24 16:29:03

标签: ios regex newline carriage-return

我正在尝试从可能出现在任何模式中的字符串中删除多个换行符/回车符(字符串来自社交网络API - TW,FB,YT)。我能够删除几乎所有的组合,但我似乎无法删除多次重复的“\ r \ n”或“\ n \ r”。

我想要的是:     “线路1 \ r \ nLine2 \ n \ n \ n \ n \ n \ n \ n \ nLine3 \ r \ r \ r \ r \ rLine4 \ r \ n \” 5号线\“\ 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“个

成为:

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"];

1 个答案:

答案 0 :(得分:2)

我在正则表达式验证网站上尝试了这个并且它有效 - > (\\r|\\n)+或者如果您不需要捕获(?:\\r|\\n)+那么它将是不同数量的斜杠,具体取决于它们是否是实际的回车或只是\ r和\ n(另外你需要将它们放入NSString字面值

中的斜杠数加倍