去空格 whitespaceAndNewlineCharacterSet和过滤字符串
一、过滤字符串
可以使用stringByTrimmingCharactersInSet函数过滤字符串中的特殊符号
首先自己定义一个NSCharacterSet, 包含需要去除的特殊符号
NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"@/:;()¥「」"、[]{}#%-*+=_//|~<>$€^•'@#$%^&*()_+'/"""]; 由于NSString中有全角符号和半角符号, 因此有些符号要包括全角和半角的 然后调用stringByTrimmingCharactersInSet NSString *trimmedString = [string stringByTrimmingCharactersInSet:set]; trimmedString就是过滤后的字符串
二、去除空格
1.去掉两端的空格
1 [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]
2.去掉多余的空格
1 NSString *str = @" this is a test . "; 2 3 NSCharacterSet *whitespaces = [NSCharacterSet whitespaceCharacterSet]; 4 NSPredicate *noEmptyStrings = [NSPredicate predicateWithFormat:@"SELF != ''"]; 5 6 NSArray *parts = [str componentsSeparatedByCharactersInSet:whitespaces]; 7 NSArray *filteredArray = [parts filteredArrayUsingPredicate:noEmptyStrings]; 8 str = [filteredArray componentsJoinedByString:@" "];
3.去掉所有空格
1 [str stringByReplacingOccurrencesOfString:@" " withString:@""]
4.去掉最左边的空格 和 去掉最右边的空格
@interface NSString (TrimmingAdditions) - (NSString *)stringByTrimmingLeftCharactersInSet:(NSCharacterSet *)characterSet ; - (NSString *)stringByTrimmingRightCharactersInSet:(NSCharacterSet *)characterSet ; @end @implementation NSString (TrimmingAdditions) - (NSString *)stringByTrimmingLeftCharactersInSet:(NSCharacterSet *)characterSet { NSUInteger location = 0; NSUInteger length = [self length]; unichar charBuffer[length]; [self getCharacters:charBuffer]; for (location; location < length; location++) { if (![characterSet characterIsMember:charBuffer[location]]) { break; } } return [self substringWithRange:NSMakeRange(location, length - location)]; } - (NSString *)stringByTrimmingRightCharactersInSet:(NSCharacterSet *)characterSet { NSUInteger location = 0; NSUInteger length = [self length]; unichar charBuffer[length]; [self getCharacters:charBuffer]; for (length; length > 0; length--) { if (![characterSet characterIsMember:charBuffer[length - 1]]) { break; } } return [self substringWithRange:NSMakeRange(location, length - location)]; } @end
例如:NSLog(@"%@",[@"abc 123 " stringByTrimmingRightCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]);
:NSLog(@"%@",[@"0.012300" stringByTrimmingRightCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"0"]]);
一个非常好的例子,来源于http://nshipster.com/nscharacterset/, 去掉多余的空格(包括两端的和中间的)
NSString *exampleStr = @" My name is Johnny!"; exampleStr = [exampleStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; NSArray *exampleArr = [exampleStr componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self <> ''"]; exampleArr = [exampleArr filteredArrayUsingPredicate:predicate]; exampleStr = [exampleArr componentsJoinedByString:@" "];
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!