我有一个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的回答,在编写代码后,新行似乎不止一行。
答案 0 :(得分: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"];
答案 1 :(得分:1)
您可以通过以下方式执行此操作
NSArray *arrSplit = [s componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
s = [arrSplit componentsJoinedByString:@"\n"];
希望它可以帮到你..
答案 2 :(得分:1)
对于正在寻找更新的 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())
输出:
你好
世界
你好吗
?
答案 3 :(得分:-1)
你可以将这个替换放在一个循环中,直到你在你的字符串中继续创建“\ n \ n”。