IOS 開發之 -- 過濾掉字符串里面所有的非法字符 字典和json之間的互轉


比如一個字符串:

 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;
}

這個方法,我們在和后台調接口的時候,用的最多,這里只做記錄用!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM