如何用一个空格替换换行(\ n)序列。
即用户输入了一个双换行符(“\ n \ n”)我希望用一个空格(“”)替换。或者用户输入了三个换行符(“\ n \ n \ n”)我希望用一个空格(“”)替换。
答案 0 :(得分:13)
试试这个:
NSArray *split = [orig componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
split = [split filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"length > 0"]];
NSString *res = [split componentsJoinedByString:@" "];
这是它的工作原理:
答案 1 :(得分:12)
比使用componentsSeparatedByCharactersInSet
NSString *fixed = [original stringByReplacingOccurrencesOfString:@"\\n+"
withString:@" "
options:NSRegularExpressionSearch
range:NSMakeRange(0, original.length)];
可能的替代正则表达式模式:
[ ]+
[ \\t]+
\\s+
\\n+
答案 2 :(得分:3)
正如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:@" "]);
答案 3 :(得分:0)
使用正则表达式,例如“s / \ n + / \ w /”(替换将匹配1个或多个换行符并替换为单个空格)
这个问题对正则表达式库有link,但也有NSRegularExpression