我正在尝试从可能出现在任何模式中的字符串中删除多个换行符/回车符(字符串来自社交网络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"];
答案 0 :(得分:2)
我在正则表达式验证网站上尝试了这个并且它有效 - > (\\r|\\n)+
或者如果您不需要捕获(?:\\r|\\n)+
那么它将是不同数量的斜杠,具体取决于它们是否是实际的回车或只是\ r和\ n(另外你需要将它们放入NSString
字面值