Objective-C - 用一个空格替换换行序列

Pet*_*rbo 10 replace newline objective-c nsstring

如何用一个空格替换换行符(\n).

即用户输入了双换行符("\n \n"),我希望用一个空格("")替换.或者用户输入了三个换行符("\n \n \n")我希望用一个空格("")替换.

das*_*ght 13

试试这个:

NSArray *split = [orig componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
split = [split filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"length > 0"]];
NSString *res = [split componentsJoinedByString:@" "];
Run Code Online (Sandbox Code Playgroud)

这是它的工作原理:

  • 第一行按换行符分割
  • 第二行删除为一行中的多个分隔符插入的空项
  • 第三行使用单个空格作为新分隔符将字符串连接回来


hfo*_*sli 13

性能比使用高3倍 componentsSeparatedByCharactersInSet

NSString *fixed = [original stringByReplacingOccurrencesOfString:@"\\n+"
                                                     withString:@" "
                                                        options:NSRegularExpressionSearch
                                                          range:NSMakeRange(0, original.length)];
Run Code Online (Sandbox Code Playgroud)

可能的替代正则表达式模式:

  • 仅替换空间: [ ]+
  • 替换空格和标签: [ \\t]+
  • 替换空格,制表符和换行符: \\s+
  • 替换换行符: \\n+