字符串過濾

iOS:字符串過濾掉非法字符
(2013-11-30 13:17:00)

標簽: it

分類: 技術iOS

這篇總結要說的問題其實并不難,單純就是為了總結下思路。
比如有一個字符串叫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這個方法進行過濾,它能做到的僅僅是把字符串兩端的非法字符過濾,但是包含在字符串里非法字符則無能為力。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 春暖花已開閱讀 842評論 0 1
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,981評論 19 139
  • 嗯對,有時候特別想對別人說你好好說話你會死么。 上課,因為帶著耳機,旁邊和我一起上課的女生給我講事情,剛...
    公子立白閱讀 277評論 0 0
  • 在這里碰見熟悉的人,想起以前的自己!
    等過風也等過你閱讀 221評論 0 0
  • 1、要考慮多家單位施工界面沖突的問題,提前判斷風險,如樁基檢測與土方單位的工作面沖突。樁基檢測先完成10#樓,然后...
    沉默和風閱讀 263評論 0 0