0

我从网站中提取一些文本并将其保存在 NSString 中,然后将其显示给用户,但我希望它在一个清晰的行中,一个字接一个字,绝对零换行符或不必要的空格或制表符。

拍摄下图:

在此处输入图像描述

Body 里面有我不想要的所有间距。我确实想要单词之间的空格(所以我想要“这是一个句子”,而不是“Thisisasentence”),但是所有这些间距确实使输出变得丑陋。我该如何摆脱它?

4

2 回答 2

5

正则表达式在这里有很大帮助:

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]];
于 2013-04-26T17:41:24.120 回答
0

使用正则表达式将模式@" +"(空格空格加)替换为@" "(空格)。

换句话说,这将用一个空格替换所有出现的两个或多个空格。

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:@" "];
于 2013-04-26T17:24:48.547 回答