我怎么能替换换行符(\ n)序列的一个空间。
即用户已经进入了一个双换行符(“\ n \ n”)我想是替换为一个空格(”“)。 或者用户已经进入三联换行符(“\ n \ n \ n”)我想是替换也有一个空格(”“)。
我怎么能替换换行符(\ n)序列的一个空间。
即用户已经进入了一个双换行符(“\ n \ n”)我想是替换为一个空格(”“)。 或者用户已经进入三联换行符(“\ n \ n \ n”)我想是替换也有一个空格(”“)。
试试这个:
NSArray *split = [orig componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
split = [split filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"length > 0"]];
NSString *res = [split componentsJoinedByString:@" "];
这是如何工作的:
3倍比使用更高性能componentsSeparatedByCharactersInSet
NSString *fixed = [original stringByReplacingOccurrencesOfString:@"\\n+"
withString:@" "
options:NSRegularExpressionSearch
range:NSMakeRange(0, original.length)];
可能的替代正则表达式模式:
[ ]+
[ \\t]+
\\s+
\\n+
作为wattson说,你可以做到这一点NSRegularExpression
但代码是非常详细,所以如果你想这样做在几个地方,我建议你做一个辅助方法,甚至是NSString
类别与像法-[NSString stringByReplacingMatchingPattern:withString:]
或相似的东西。
NSString *string = @"a\n\na";
NSLog(@"%@", [[NSRegularExpression regularExpressionWithPattern:@"\\n+"
options:0
error:NULL]
stringByReplacingMatchesInString:string
options:0
range:NSMakeRange(0, [string length])
withTemplate:@" "]);
使用正则表达式,类似“S / \ N + / \ W /”(一个替换将匹配1个或多个新行字符,并用一个空格替换)
这个问题有一个链接到一个正则表达式库,但有NSRegularExpression也可用