如何从字符串中删除所有不必要的空格?

时间:2013-04-26 17:18:01

标签: objective-c nsstring

我从网站上提取一些文本并将其保存在NSString中,然后将其显示给用户,但我想要一个明确的行,一个单词接一个单词,绝对零换行或不必要的空格或标签。

拍摄以下图片:

enter image description here

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

2 个答案:

答案 0 :(得分: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]];

答案 1 :(得分: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:@" "];