iOS:字符串过滤掉非法字符
2017-02-14 18:02
375 查看
这篇总结要说的问题其实并不难,单纯就是为了总结下思路。
比如有一个字符串叫tempString,包含有一些非法字符并不是我们想要的,这个tempString如下:
+86 150-1111-1234#,再复杂点可能是
(010)*(123)E6(234)**150-1111-^^-1234#等。
在应用中我们仅仅是想保留下字符串里的数字,括号、百分号等这些非数字的符号就得过滤掉。过滤的方法有很多种。可以将这个字符串从头到尾扫描一遍,遇到非法字符就剔除掉。也可以用替代方法。
这里简单说两种。
第一种就是替代法。
使用stringByReplacingOccurrencesOfString这个方法将字符串里的非法字符逐个替代。
具体如下:
1 tempString = [tempString stringByReplacingOccurrencesOfString:@"
" withString:@""];
2 tempString = [tempString stringByReplacingOccurrencesOfString:@"#" withString:@""];
3 tempString = [tempString stringByReplacingOccurrencesOfString:@"*" withString:@""];
4 tempString = [tempString stringByReplacingOccurrencesOfString:@"+" withString:@""];
5 tempString = [tempString stringByReplacingOccurrencesOfString:@"-" withString:@""];
...
这样做比较烦的一个问题就是,如果要过滤掉的非法字符有很多的话,就得写多行这种替代代码。
另外一种方法比较巧妙,先将字符串按非法字符集进行截断最后再拼接起来。代码看起来很简直,直接了断。
具体如下:
//将所有可能的非法字符写进doNotWant字符串,可以比需过滤的字符串中非法字符多
1 NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"[]{}(#%-*+=_)\\|~(<>$%^&*)_+
"];
2 tempString = [[tempString componentsSeparatedByCharactersInSet: doNotWant]componentsJoinedByString: @""];
在doNotWant这个字符集里想写几个就写几个。
另外不能用stringByTrimmingCharactersInSet这个方法进行过滤,它能做到的仅仅是把字符串两端的非法字符过滤,但是包含在字符串里非法字符则无能为力。
P.S. 最后介绍一个网站。新浪博客不支持代码高亮的功能,如果想在博文里贴代码是件很烦的事,仔细研究了下还是没有找到好的办法。找到了个网站发芽网,不是想要的效果,就凑合着用吧。
挺早以前就想弄个人博客玩玩,但因为博文搬家不是很好解决,就一直还停留在这里......
比如有一个字符串叫tempString,包含有一些非法字符并不是我们想要的,这个tempString如下:
+86 150-1111-1234#,再复杂点可能是
(010)*(123)E6(234)**150-1111-^^-1234#等。
在应用中我们仅仅是想保留下字符串里的数字,括号、百分号等这些非数字的符号就得过滤掉。过滤的方法有很多种。可以将这个字符串从头到尾扫描一遍,遇到非法字符就剔除掉。也可以用替代方法。
这里简单说两种。
第一种就是替代法。
使用stringByReplacingOccurrencesOfString这个方法将字符串里的非法字符逐个替代。
具体如下:
1 tempString = [tempString stringByReplacingOccurrencesOfString:@"
" withString:@""];
2 tempString = [tempString stringByReplacingOccurrencesOfString:@"#" withString:@""];
3 tempString = [tempString stringByReplacingOccurrencesOfString:@"*" withString:@""];
4 tempString = [tempString stringByReplacingOccurrencesOfString:@"+" withString:@""];
5 tempString = [tempString stringByReplacingOccurrencesOfString:@"-" withString:@""];
...
这样做比较烦的一个问题就是,如果要过滤掉的非法字符有很多的话,就得写多行这种替代代码。
另外一种方法比较巧妙,先将字符串按非法字符集进行截断最后再拼接起来。代码看起来很简直,直接了断。
具体如下:
//将所有可能的非法字符写进doNotWant字符串,可以比需过滤的字符串中非法字符多
1 NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"[]{}(#%-*+=_)\\|~(<>$%^&*)_+
"];
2 tempString = [[tempString componentsSeparatedByCharactersInSet: doNotWant]componentsJoinedByString: @""];
在doNotWant这个字符集里想写几个就写几个。
另外不能用stringByTrimmingCharactersInSet这个方法进行过滤,它能做到的仅仅是把字符串两端的非法字符过滤,但是包含在字符串里非法字符则无能为力。
P.S. 最后介绍一个网站。新浪博客不支持代码高亮的功能,如果想在博文里贴代码是件很烦的事,仔细研究了下还是没有找到好的办法。找到了个网站发芽网,不是想要的效果,就凑合着用吧。
挺早以前就想弄个人博客玩玩,但因为博文搬家不是很好解决,就一直还停留在这里......
相关文章推荐
- IOS 开发之 -- 过滤掉字符串里面所有的非法字符 字典和json之间的互转
- iOS:字符串过滤掉非法字符
- iOS:字符串过滤掉非法字符
- iOS NSString 过滤非法字符串
- 判断字符串(是否数值型,脏话过滤,非法字符过滤)
- C#创建目录,文件名过滤特殊字符串,非法字符
- iOS 过滤json字符串中的特殊字符
- 20141015个人日志(判断字符串中是否含有非法字符及非法字符串过滤的问题)
- iOS判断字符串中是否含有非法字符
- Python sql注入 过滤字符串的非法字符
- 通过安全字符串过滤非法字符
- 过滤表单提交中的非法字符
- 过滤SQL非法字符并格式化html代码
- 利用配置文件过滤非法字符
- asp 过滤非法字符函数
- asp 过滤非法字符函数
- 过滤非法字符 三
- ASP.NET过滤重复字符与字符串数组去掉重复字符串几种方法
- 过滤sql中非法字符防注入式攻击方法
- 过滤非法字符