【问题标题】:Remove multiple newlines/carriage-returns from a string从字符串中删除多个换行符/回车符
【发布时间】:2013-05-24 16:29:02
【问题描述】:

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

我想要的是: "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"

变成:

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

【问题讨论】:

  • 我认为 ios 也接受字符类并且会使用这个正则表达式:[\r\\n]+。基本上,它将在您的代码中用\n 替换任何连续的\r 和\\n。
  • @Jerry,你应该这样回答

标签: ios regex newline carriage-return


【解决方案1】:

我在一个正则表达式验证站点上尝试了这个,它可以工作 -> (\\r|\\n)+ 或者如果你不需要捕获 (?:\\r|\\n)+ 那么它将是不同数量的斜线,具体取决于它们是否是实际的马车返回或只是 \r 和 \n (另外,您需要将斜杠的数量加倍才能将它们放在 NSString 文字中)

【讨论】:

  • 这个解决方案和上面 Jerry 的解决方案都可以完美运行,谢谢!
  • 我不是故意要敲诈​​杰里,如果他工作的话。我在网站上尝试过,它也最终替换了“Line”中的所有“n”,所以我对其进行了一些更改。
猜你喜欢
  • 2017-12-11
  • 1970-01-01
  • 2011-06-21
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 2014-05-12
  • 2014-05-20
  • 2011-03-04
相关资源
最近更新 更多