IOS 开发之 -- 过滤掉字符串里面所有的非法字符 字典和json之间的互转
2024-10-08 03:13:06
比如一个字符串:
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;
}
这个方法,我们在和后台调接口的时候,用的最多,这里只做记录用!
最新文章
- jQuery.lazyload
- PHP文件相关的操作函数——文件操作
- C#编程模式之扩展命令
- java DMO及增删改查代码的自动生成
- mysql规范
- 傅里叶:有关FFT,DFT与蝴蝶操作(转 重要!!!!重要!!!!真的很重要!!!!)
- C# 操作网页标签
- 【IBM】Merlin 给 Java 平台带来了非阻塞 I/O
- 学习OpenSeadragon之二 (界面缩放与平移规则设置)
- Linux学习之Shell编程基础
- poj 3101 Astronomy(分数的最小公倍数)
- Ajax 下拉加载数据
- python开发concurent.furtrue模块:concurent.furtrue的多进程与多线程&;协程
- VC Edit控件单行垂直居中和定制外框的实现
- Python3之弹性力学——应力张量2
- Umbraco 资源推荐
- Linux开启root用户
- TOleControl(WebBrowser1).Visible := False 这样就可以隐藏浏览器控件
- 简单实现java线程池
- 浅谈 Boost.Asio 的多线程模型
热门文章
- Python-try except else finally有return时执行顺序探究
- int.TryParse非预期执行引发的思考 ASP.NET -- WebForm -- 给图片添加水印标记 Windows -- 使用批处理文件.bat删除旧文件
- CString中Format函数与格式输入与输出
- windows中mongoDB安装教程
- MS SQL表字段自增相关的脚本
- SQL2005数据库行列转换
- atitit.Atitit. Gui控件and面板-----服务端控件 java struts的实现最佳实践
- Atitit.Gui控件and面板----db数据库区----- .数据库比较同步工具 vOa
- [svc]jq神器使用
- android studio 使用问题记录