如何用一個空格替換換行符(\ n)序列。Objective-C - 用一個空格替換換行符
即用戶輸入了一個雙換行符(「\ n \ n」)我想用一個空格替換(「」)。或者用戶輸入了三重換行符(「\ n \ n \ n」),我想用一個空格替換(「」)。
如何用一個空格替換換行符(\ n)序列。Objective-C - 用一個空格替換換行符
即用戶輸入了一個雙換行符(「\ n \ n」)我想用一個空格替換(「」)。或者用戶輸入了三重換行符(「\ n \ n \ n」),我想用一個空格替換(「」)。
試試這個NSRegularExpression:
NSArray *split = [orig componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
split = [split filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"length > 0"]];
NSString *res = [split componentsJoinedByString:@" "];
這是它如何工作的:
使用正則表達式,類似「S/\ N +/\ W /」(一個替換將匹配1個或多個新行字符,並用一個空格替換)
這個問題有一個link到正則表達式庫,但它有太多
由於wattson說你插入多個分隔空項目可以用NSRegularExpression
來做到這一點,但代碼是非常冗長的,所以如果你想在幾個地方做到這一點,我建議你做一個幫手方法,或者甚至用類似-[NSString stringByReplacingMatchingPattern:withString:]
或類似方法的NSString
類別。
NSString *string = @"a\n\na";
NSLog(@"%@", [[NSRegularExpression regularExpressionWithPattern:@"\\n+"
options:0
error:NULL]
stringByReplacingMatchesInString:string
options:0
range:NSMakeRange(0, [string length])
withTemplate:@" "]);
3倍,比使用componentsSeparatedByCharactersInSet
NSString *fixed = [original stringByReplacingOccurrencesOfString:@"\\n+"
withString:@" "
options:NSRegularExpressionSearch
range:NSMakeRange(0, original.length)];
可能的替代正則表達式模式更好的性能:
[ ]+
[ \\t]+
\\s+
\\n+
謝謝你,接受你的答案爲是最簡單的可讀性。 – 2012-07-06 13:02:36