在 Objective-C 中从字符串中删除空格
Posted
技术标签:
【中文标题】在 Objective-C 中从字符串中删除空格【英文标题】:Remove whitespace from string in Objective-C 【发布时间】:2011-01-10 10:17:15 【问题描述】:我有几个字符串。有些在开头有空格,有些则没有。我想检查一个字符串是否以空格开头,如果是则删除它。
【问题讨论】:
稍微搜索一下也无妨。看看What's the best way to trim whitespace from a string in Cocoa Touch? 【参考方案1】:在 NSString 类中有这样的方法。检查stringByTrimmingCharactersInSet:(NSCharacterSet *)set
。您应该使用[NSCharacterSet whitespaceCharacterSet]
作为参数:
NSString *foo = @" untrimmed string ";
NSString *trimmed = [foo stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
【讨论】:
这也将修剪尾随空格(这可能是可取的,也可能不是可取的。(原始问题要求从头开始删除它)。stringByTrimmingCharactersInSet
只删除字符串开头和结尾的字符,而不是中间的字符。对于那些试图删除字符串中间空格的人,请使用[yourString stringByReplacingOccurrencesOfString:@" " withString:@""]
。【参考方案2】:
您可以将 stringByTrimmingCharactersInSet NSString 方法与 whitespaceAndNewlineCharacterSet NSCharacterSet 一起使用:
NSString *testString = @" Eek! There are leading and trailing spaces ";
NSString *trimmedString = [testString stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
【讨论】:
+1 用于推荐 whitespaceAndNewlineCharacterSet 而不仅仅是 whitespaceCharacterSet。 -1 to Apple 重新定义空白以不包含换行符(他们应该创建一个新的 inlineWhitespaceCharacterSet 代替) 这也将修剪尾随空格(这可能是可取的,也可能不是可取的。(原始问题要求从头开始删除它)。【参考方案3】:这将只删除前导空格。
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
【讨论】:
瑞恩,感谢您回答最初的问题!!!【参考方案4】:我写了一个快速宏来减少需要编写的代码量。
第 1 步:编辑应用的 PCH 文件,该文件应命名为 Project-Name-Prefix.pch
#define TRIM(string) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]
第 2 步:在您想要修剪字符串时享受编写更少的代码
NSLog(@"Output: %@ %@", TRIM(@"Hello "), TRIM(@"World "));
Output: Hello World
【讨论】:
以上是关于在 Objective-C 中从字符串中删除空格的主要内容,如果未能解决你的问题,请参考以下文章