【问题标题】:NSString - remove more than 3 "newlines" from middle of NSStringNSString - 从 NSString 中间删除超过 3 个“换行符”
【发布时间】:2020-01-10 19:11:51
【问题描述】:

试图从 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"];

【问题讨论】:

  • stringByTrimmingCharactersInSet 只从末端删除,而不是从中间删除,所以这不是一个可行的选择。
  • 参见stackoverflow.com/a/23336689/1226963(只需根据需要更改替换字符串)。
  • @rmaddy,您的代码答案是删除所有字符串的新行。我只想删除 3 个及以上的换行符。
  • 我链接到的答案是您需要的通用解决方案。显然,您需要调整搜索和替换字符串以满足您的特定需求。

标签: objective-c nsstring


【解决方案1】:
   message = [message stringByReplacingOccurrencesOfString:@"\\n{3,}" withString:@"\n\n"];

您快到了——您不能只使用正则表达式作为第一个参数,因为无法区分要替换的字符串和要替换的 RE,它们都只是字符串...

您需要的是兄弟方法stringByReplacingOccurrencesOfString:withString:options:range:,将options 参数设置为NSRegularExpressionSearch 以指示第一个参数是RE,并将range 设置为整个字符串。

HTH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-07
    • 2010-11-03
    • 2010-10-29
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多