我从网站中提取一些文本并将其保存在 NSString 中,然后将其显示给用户,但我希望它在一个清晰的行中,一个字接一个字,绝对零换行符或不必要的空格或制表符。
拍摄下图:
Body 里面有我不想要的所有间距。我确实想要单词之间的空格(所以我想要“这是一个句子”,而不是“Thisisasentence”),但是所有这些间距确实使输出变得丑陋。我该如何摆脱它?
我从网站中提取一些文本并将其保存在 NSString 中,然后将其显示给用户,但我希望它在一个清晰的行中,一个字接一个字,绝对零换行符或不必要的空格或制表符。
拍摄下图:
Body 里面有我不想要的所有间距。我确实想要单词之间的空格(所以我想要“这是一个句子”,而不是“Thisisasentence”),但是所有这些间距确实使输出变得丑陋。我该如何摆脱它?
正则表达式在这里有很大帮助:
NSString *tooManySpaces = @" Too\tmany spaces \n and on several \nlines, at that";
NSString *cleaned = [tooManySpaces stringByReplacingOccurrencesOfString: @"\\s+"
withString: @" "
options: NSRegularExpressionSearch
range: NSMakeRange(0, tooManySpaces.length)];
该\s
模式涵盖空白,即空格、制表符和换行符。如果太多,您可以指定您需要的那些,如下所示:[ \t]+
覆盖空格和制表符。
为了在开头和结尾删除任何多余的空格,您还需要修剪字符串(在应用正则表达式替换之前或之后):
cleaned = [cleaned stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
使用正则表达式将模式@" +"
(空格空格加)替换为@" "
(空格)。
换句话说,这将用一个空格替换所有出现的两个或多个空格。
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@" +" options:0 error:&error];
NSString *someString = ...; // some string with lots of spaces
NSString *newString = [regex stringByReplacingMatchesInString:someString options:0 range:NSMakeRange(0, someString.length) withTemplate:@" "];