比如一個字符串:
NSString * hmutStr = @"(010)*(123)E6(234)**150-1111-^^-1234#"
很多時候,數據之間的傳輸,我們僅僅只想保留下字符串里面的數字和字母,其他的飛數字字母的符號都得過濾掉,過濾的方法有兩種:
方法一:
替代發
使用stringByReplacingOccurrencesOfString這個方法將字符串里的非法字符逐個替代
具體代碼如下:
hmutStr = [tempString stringByReplacingOccurrencesOfString:@" " withString:@""]; hmutStr = [tempString stringByReplacingOccurrencesOfString:@"#" withString:@""]; hmutStr = [tempString stringByReplacingOccurrencesOfString:@"*" withString:@""]; hmutStr = [tempString stringByReplacingOccurrencesOfString:@"+" withString:@""]; hmutStr = [tempString stringByReplacingOccurrencesOfString:@"-" withString:@""];
如果還有其他的字符就一次寫入代碼,進行過濾,比較繁瑣,得寫很多無用的代碼,效率也不高!
方法二:
先將字符串按非法字符串集進行裁斷,最后再拼接起來,代碼看起來很直觀,直接了斷
具體代碼如下:
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"[]{}(#%-*+=_)\\|~(<>$%^&*)_+ "]; NSString * hmutStr = [[mutStr componentsSeparatedByCharactersInSet: doNotWant]componentsJoinedByString: @""]; NSLog(@"humStr is %@",hmutStr); return hmutStr;
在doNotWant這個字符集里想寫幾個就寫幾個,很方便,一個方法就搞定了,這樣的話,字符串直接的傳輸,就很方便了!
分享一個公用方法:字典轉json字符串,並直接過濾掉里面的非法字符
#pragma mark 字典轉json - (NSString*)dictionaryToJson:(NSDictionary *)dic { NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error]; NSString *jsonString; if (!jsonData) { NSLog(@"%@",error); }else{ jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding]; } NSMutableString *mutStr = [NSMutableString stringWithString:jsonString]; // NSRange range = {0,jsonString.length}; NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"[]{}(#%-*+=_)\\|~(<>$%^&*)_+ "]; NSString * hmutStr = [[mutStr componentsSeparatedByCharactersInSet: doNotWant]componentsJoinedByString: @""]; NSLog(@"humStr is %@",hmutStr); return hmutStr; }
當然方法有很多種,如果大家有什么好的方法,還希望大家不吝指教!
json轉化為字典:具體代碼如下:
+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString { if (jsonString == nil) { return nil; } NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; NSError *err; NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err]; if(err) { NSLog(@"json解析失敗:%@",err); return nil; } return dic; }
這個方法,我們在和后台調接口的時候,用的最多,這里只做記錄用!