从Objective-C中的字符串中删除空格


Answers:


216

NSString类中有针对该方法的方法。检查stringByTrimmingCharactersInSet:(NSCharacterSet *)set。您应该使用以下[NSCharacterSet whitespaceCharacterSet]参数:

NSString *foo = @" untrimmed string ";
NSString *trimmed = [foo stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

4
这也将修剪尾随空白(这可能会或可能不希望(原来的问题问到刚刚从一开始就删除它)。
lnafziger

1
stringByTrimmingCharactersInSet仅删除字符串开头和结尾的字符,而不删除中间的字符。对于那些试图在字符串中间删除空格的人,请使用[yourString stringByReplacingOccurrencesOfString:@" " withString:@""]
Arnab

75

您可以将stringByTrimmingCharactersInSet NSString方法与whitespaceAndNewlineCharacterSet NSCharacterSet结合使用,如下所示:

NSString *testString = @"  Eek! There are leading and trailing spaces  ";
NSString *trimmedString = [testString stringByTrimmingCharactersInSet:
                             [NSCharacterSet whitespaceAndNewlineCharacterSet]];

4
+1用于推荐whitespaceAndNewlineCharacterSet而不只是whitespaceCharacterSet。
里克·史密斯·翁纳

1
-1向Apple重新定义不包含换行符的空格(它们应该创建一个新的inlineWhitespaceCharacterSet)
AlexChaffee 2013年

这也将修剪尾随空白(这可能会或可能不希望(原来的问题问到刚刚从一开始就删除它)。
lnafziger

7

我编写了一个快速宏来减少需要编写的代码量。

步骤1:编辑应用程序的PCH文件,该文件应命名为Project-Name-Prefix.pch

#define TRIM(string) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]

第2步:想要修剪字符串时,享受编写方式更少的代码

NSLog(@"Output: %@ %@", TRIM(@"Hello        "), TRIM(@"World      "));

Output: Hello World

6

这将仅删除前导空白。

NSString *myString = @"   123   ";
NSLog(@"mystring %@, length %d",myString, myString.length);
NSRange range = [myString rangeOfString:@"^\\s*" options:NSRegularExpressionSearch];
myString = [myString stringByReplacingCharactersInRange:range withString:@""];
NSLog(@"mystring %@, length %d",myString, myString.length);

输出

mystring    123   , length 9
mystring 123   , length 6
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.