Objective c NSString-删除3个以上的;新行“;从字符串的中间开始

Objective c NSString-删除3个以上的;新行“;从字符串的中间开始,objective-c,nsstring,Objective C,Nsstring,尝试从NSString的中间删除不必要的新行(3行或更多) 删除中间新行的字符串:\n\n\n Hello my story is... 目标: Hello my story is... message = [message stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]]; message = [message stringByTrimmingCharactersIn

尝试从NSString的中间删除不必要的新行(3行或更多)

删除中间新行的字符串:\n\n\n

Hello








my story is...
目标:

Hello

my story is...
    message = [message stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
    message = [message stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    message = [message stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    message = [message stringByReplacingOccurrencesOfString:@"\\n{3,}" withString:@"\n\n"];
    message = [message stringByReplacingOccurrencesOfString:@"\r\n" withString:@"\n\n"];
没有成功的代码:

Hello

my story is...
    message = [message stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
    message = [message stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    message = [message stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    message = [message stringByReplacingOccurrencesOfString:@"\\n{3,}" withString:@"\n\n"];
    message = [message stringByReplacingOccurrencesOfString:@"\r\n" withString:@"\n\n"];
您就快到了–您不能只使用正则表达式作为第一个参数,因为无法区分要替换的字符串和要替换的RE之间的区别,它们都只是字符串

您需要的是同级方法
stringByReplacingOccurrencesOfString:with string:options:range:
,您可以将
options
参数设置为
NSRegularExpressionSearch
以指示第一个参数是RE,并将
range
设置为整个字符串


HTH

stringByTrimmingCharactersInSet
仅从末端删除,而不是从中间删除,因此这不是一个可行的选项。请参阅(根据需要更改替换字符串)。@rmaddy,您的代码答案是删除所有字符串的新行。我只想删除3个以上的换行符。我链接到的答案是您需要的通用解决方案。显然,您需要调整搜索和替换字符串以满足您的特定需要。