比如一个字符串:

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

这个方法,我们在和后台调接口的时候,用的最多,这里只做记录用!

IOS 开发之 -- 过滤掉字符串里面所有的非法字符 字典和json之间的互转的更多相关文章

  1. 李洪强iOS开发Swift篇—03_字符串和数据类型

    李洪强iOS开发Swift篇—03_字符串和数据类型 一.字符串 字符串是String类型的数据,用双引号""包住文字内容  let website = "http:// ...

  2. iOS开发-通过正则表达式判断字符串是否为纯阿拉伯数字

    iOS开发-通过正则表达式判断字符串是否为纯阿拉伯数字 简述:NSString * regex_0 = @"\\d{1,}";   /*允许首位为0*/ NSString * re ...

  3. [IOS 开发] NSDateFormatter的格式字符串 -- 《整理的笔记》

    在ios开发中, OBjective-C中的NSDate是一个挺讨厌的类型, 自己找不到转换成字符串的类型,还得带一个NSDateFormatter的类型. 官方文档上对NSDateFormatter ...

  4. iOS开发-OC语言 (三)字符串

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 24.0px "PingFang SC" } p ...

  5. iOS开发——NSArray中的字符串排序

     NSArray *arr = @[@"fjhsf",@"wert",@"fdg",@"asd",@"fs g ...

  6. iOS开发:用DES对字符串加解密

    参考http://www.cnblogs.com/janken/archive/2012/04/05/2432930.html,做了个小修改,实现PHP,JAVA,Objective-c加解密结果相同 ...

  7. iOS开发——UI基础-懒加载,plist文件,字典转模型,自定义view

    一.懒加载 只有使用到了商品数组才会创建数组 保证数组只会被创建一次 只要能够保证数组在使用时才创建, 并且只会创建一次, 那么我们就称之为懒加载 lazy - (void)viewDidLoad 控 ...

  8. iOS开发JSON字符串和字典互转

    1.相关属性简述 NSJSONReadingOptions读取属性: typedef NS_OPTIONS(NSUInteger, NSJSONReadingOptions) { NSJSONRead ...

  9. iOS开发之工具篇-20个可以帮你简化移动app开发流程的工具

    如果想进入移动app开发这个领域,你总能从别的开发者或者网上或者书上找到各种各样的方法和工具,对于新手来说,还没有摸清门路就已经陷入迷茫了.这里推荐20个可以帮你简化app开发流程的工具.很多开发者都 ...

随机推荐

  1. Linux-iptables详解

    一:前言   防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防 ...

  2. jquery api 常见api 元素操作例子

    append_prepend.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> ...

  3. Linux命令-文件处理命令:tail

    tail /etc/services 查看etc目录的services文件最后10行内容(默认显示后10行内容) tail -n /etc/services 查看etc目录的services文件的后5 ...

  4. JAVA中的static方法

    static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static修饰的成员变量和成员方法独立于该类的任何 ...

  5. ASP.NET Identity & OWIN 学习资料

    有关 ASP.NET Identity 的更多细节: http://www.asp.net/identity 从一个空项目中添加 ASP.NET Identity 和 OWIN 支持: http:// ...

  6. 【BLE】CC2541之主机端读取特征值

    本篇博文最后改动时间:2017年01月06日,11:06. 一.简单介绍 本文介绍怎样在SimpleBLECentralproject中,读取SimpleBLEPeripheralproject中的特 ...

  7. python学习之yummain模块

    定义:`yum`的命令行接口. yummain.main(args) Run the yum program from a command line interface. yummain.hotsho ...

  8. css 优先级的bug

    对于前端而言,了解css样式的优先级,对开发或处理bug有着事半功倍的效果,今天在做项目的时候,突然碰到一个优先级的小问题,刚开始不知道所因,后来才发现这个问题是由优先级造成的.先描述下问题,鼠标悬停 ...

  9. 4个著名VCS的比较

    特征 CVS Git Mercurial Subversion 是否原子提交 CVS: 没有. CVS提交不是原子的 Git: 是的. 提交都是原子的 Mercurial: 是的 Subversion ...

  10. excel 笔记

    1.复制公式到整列(至文件尾): 当你想复制公式到整列(至文件尾)可选中有公式的单元格,待出现黑色填充柄时,双击即可