【问题标题】:Objective-C - Replace all double new lines with 1 new line?Objective-C - 用 1 个新行替换所有双新行?
【发布时间】:2011-11-21 18:21:48
【问题描述】:

我有一个 html 字符串,我想一次允许 1 个换行符。我正在尝试用“\n”替换所有“\n\n”。但最后我得到了双换行符。

是否可以打印一个字符串的内容来查看内容是什么,所以不用换行在输出窗口中显示“\n”。

while ((range = [html rangeOfString:@"\n\n"]).length) 
{
   [html replaceCharactersInRange:range withString:@"\n"];
}

编辑: html 已被转换为纯文本(因此字符串中没有 BR 标记)

【问题讨论】:

  • 你标记了这个 [nsstring] 但htmlNSMutableString 对吗?

标签: objective-c nsstring nsmutablestring


【解决方案1】:

如果您想将不确定数量的换行符压缩为一个,则可以使用 NSRegularExpression。比如:

NSRegularExpression *squeezeNewlines = [NSRegularExpression regularExpressionWithPattern:@"\n+" options:0 error:nil];
[squeezeNewlines replaceMatchesInString:html options:0 range:NSMakeRange(0, [html length]) withTemplate:@"\n"];

(写在我的浏览器中,因为我手头没有最近的 Mac,所以没有测试,所以如果我搞砸了,请告诉我。)

【讨论】:

  • @aryaxt:是的。它在 4.0 中被添加到 iOS 中,在 Lion 中被添加到 Mac OS X 中。
【解决方案2】:

你为什么不改用:

- (NSUInteger)replaceOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)opts range:(NSRange)searchRange

【讨论】:

  • 您的 html 文件中是否有“\n\n\n”序列?
  • 是的,这正是 replaceOccurrencesOfString 对我不起作用的原因。但是我的逻辑应该起作用,因为它会循环直到不再有“双新行”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2011-01-27
  • 2012-07-06
  • 2016-12-04
  • 1970-01-01
  • 2022-01-09
  • 2018-01-14
相关资源
最近更新 更多