关闭

iOS:字符串过滤掉非法字符

标签: NSCharacterSetstringByReplacingOcc
604人阅读 评论(0) 收藏 举报
分类:
这篇总结要说的问题其实并不难,单纯就是为了总结下思路。

比如有一个字符串叫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:@""];
...

这样做比较烦的一个问题就是,如果要过滤掉的非法字符有很多的话,就得写多行这种替代代码。

另外一种方法比较巧妙,先将字符串按非法字符集进行截断最后再拼接起来。代码看起来很简直,直接了断。
具体如下:

1 NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"[]{}(#%-*+=_)\\|~(<>$%^&*)_+ "];
2 tempString = [[tempString componentsSeparatedByCharactersInSet: doNotWant]componentsJoinedByString@""];

在doNotWant这个字符集里想写几个就写几个。

另外不能用stringByTrimmingCharactersInSet这个方法进行过滤,它能做到的仅仅是把字符串两端的非法字符过滤,但是包含在字符串里非法字符则无能为力。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

php常用过滤非法/特殊字符串的方法

//简单过滤JS 、PHP标签 function cleanJs($html){ $html=trim($html); $html=str_replace(array(''),arr...
  • zqtsx
  • zqtsx
  • 2013-08-06 10:24
  • 6218

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。

这是华为2013的一个机试题,会好半天才想出来,用了三个for循环,可能有点繁琐,但只要慢慢看还是好理解的, 题目:       通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过...
  • zhou753099943
  • zhou753099943
  • 2015-05-30 15:37
  • 2304

[C/C++]_[初级]_[替换过滤utf8字符串里无效字符]

场景: 1. 分析数据时,获取到的数据是字符串,但是有可能不是正确的完整的utf8字符串,打印出来或输出到文件时表现出来的就是显示乱码. 这时候就需要过滤掉非法字符使utf8字符串能正确显示, 比如把...
  • infoworld
  • infoworld
  • 2015-09-10 15:42
  • 4043

iOS:字符串过滤掉非法字符

这篇总结要说的问题其实并不难,单纯就是为了总结下思路。 比如有一个字符串叫tempString,包含有一些非法字符并不是我们想要的,这个tempString如下:+86 150-1111-1234...
  • u010850094
  • u010850094
  • 2017-02-14 18:02
  • 502

输入一个字符串,过滤掉非首次出现的重复字符

输入一个字符串,过滤掉非首次出现的重复字符,例如:"abcdeacdag",过滤后的字符串为"abcdeg" import java.util.*; public class FilterChar_...
  • hq_buddhist
  • hq_buddhist
  • 2017-07-11 21:15
  • 278

iOS如何过滤掉文本中特殊字符

An NSString object represents a string of ordered characters (text). An NSCharacterSet obj...
  • u010944926
  • u010944926
  • 2014-05-28 11:51
  • 1072

华为:编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉

/* 题目描述(60分): 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序, 若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果...
  • shihui512
  • shihui512
  • 2013-04-16 18:11
  • 2090

过滤字符串(若字符串中出现多个相同的字符,将非首次出现的字符过滤掉)

#include using namespace std; #include /* 题目描述: 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出...
  • sleeping_dog
  • sleeping_dog
  • 2013-08-06 22:04
  • 1036

华为机试题----过滤掉字符串中的重复项

题目描述(60分): 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“ab...
  • changyuanchn
  • changyuanchn
  • 2013-10-08 13:09
  • 4271

如何去除utf-8字符串里头的非法字符

在开发的过程中碰到了在utf-8的字符串里头有非法字符的问题,搜了下,有不少人遇到了相同的问题。 有iconv.open("UTF-8", UTF-8//IGNORE") Table 3-7. W...
  • RomanBrickie
  • RomanBrickie
  • 2014-01-10 19:17
  • 1345
    个人资料
    • 访问:50776次
    • 积分:919
    • 等级:
    • 排名:千里之外
    • 原创:37篇
    • 转载:30篇
    • 译文:0篇
    • 评论:2条
    最新评论