5

我有一个NSString字符串之间可以有多个 \n 。我需要用单个 \n 替换多次出现的 \n。

我试过这段代码:

newString = [string stringByReplacingOccurrencesOfString:@"\n\n" withString:@"\n"];

但是,如果在字符串中遇到一系列“\n\n\n\n\n\n”,这不会给出预期的结果。在这种情况下,它们将被替换为“\n\n\n”。

我应该怎么做才能将多个“\n”替换为单个“\n”?

谢谢大家!

更新:添加UITextView将过滤字符串设置为文本的屏幕截图。按照 Attila H 在回答中的建议编写代码后,新行似乎不止一条。 在此处输入图像描述

4

3 回答 3

16

您可能会使用NSRegularExpression。这是最简单优雅的方式:

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\n+" options:0 error:NULL];
NSString *newString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@"\n"];
于 2013-04-08T09:55:24.940 回答
4

对于任何寻找更新的Swift 4答案的人:

extension String {

   func removeMultipleNewlinesFromMiddle() -> String {
       let returnString = trimmedString.replacingOccurrences(of: "\n+", with: "\n", options: .regularExpression, range: nil)
       return (returnString)
   }
}

用法 :

let str = "Hello \n\n\nWorld \n\nHow are you\n?"
print (str.removeMultipleNewlinesFromMiddle())

输出 :

你好

世界

你好吗

?

于 2018-10-18T11:47:38.990 回答
1

您可以通过以下方式进行

NSArray *arrSplit = [s componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
                s = [arrSplit componentsJoinedByString:@"\n"];

希望它可以帮助你..

于 2013-04-08T09:55:50.227 回答