iOS 過濾特殊字符和Emoji表情

最近在項目中遇到過濾某些特殊字符和表情的需求,有正則表達式和NSCharacterSet兩種方法可以實現此需求。

1 NSCharacterSet方法,詳細的具體API請查閱文檔。

- (NSString *)ttLegalNickName
{
    //合法字符集合
    NSCharacterSet *legalPunctuationCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@",.·,。?、"];
    
    //英文和數字字符集合
    NSCharacterSet *alphanumericCharacterSet = [NSCharacterSet alphanumericCharacterSet];
    
    //中文字符集合
    NSCharacterSet *chineseSet = [NSCharacterSet ttChineseSet];
    
    //合法字符  英文和數字字符 中文字符 并集的集合
    NSMutableCharacterSet *characterSet  = [[NSMutableCharacterSet alloc] init];
    [characterSet formUnionWithCharacterSet:legalPunctuationCharacterSet];
    [characterSet formUnionWithCharacterSet:alphanumericCharacterSet];
    [characterSet formUnionWithCharacterSet:chineseSet];
    
    // 除去合法字符  英文和數字字符 中文字符 并集的集合的補集
    NSCharacterSet *illegalCharacterSet = characterSet.invertedSet;
    
    // 將非法字符過濾成 @""
    NSString *legalNickName = [[self componentsSeparatedByCharactersInSet:illegalCharacterSet] componentsJoinedByString:@""];
    
    // 將合法字符過濾成 @"·"
    legalNickName = [[legalNickName componentsSeparatedByCharactersInSet:legalPunctuationCharacterSet] componentsJoinedByString:@"·" ];
    
    return legalNickName;
}
+ (NSCharacterSet *)ttChineseSet
{
    // 中文字符集合
    static NSCharacterSet *chineseSet;
    if (chineseSet == nil)
    {
        NSMutableCharacterSet *aCharacterSet = [[NSMutableCharacterSet alloc] init];
        
        NSRange lcEnglishRange;
        lcEnglishRange.location = (unsigned int)0x4e00;
        lcEnglishRange.length = (unsigned int)0x9fa5 - (unsigned int)0x4e00;
        [aCharacterSet addCharactersInRange:lcEnglishRange];
        chineseSet = aCharacterSet;
    }
    return chineseSet;
}

以上可以根據自己的需求去靈活配置建立分類。

2 正則方法, 后續(xù)更新

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,502評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,725評論 25 709
  • 遠望,那時離家月正圓。黃沙揚轱轆掩,天涯落霞染。 又一年仲秋時,酒映紅燭赤。施粥山上古寺,淚目孔明逝。
    Miss二先生閱讀 293評論 0 0
  • 全國的航站樓都差不多,極為寬敞明亮,這種色調能對人的情緒起到正向調節(jié)作用。我想正是因為光,機場的每一次別離都不會異...
    Queena女魔頭閱讀 640評論 1 51
  • 薄冊子半日書,一百多頁寫了18個人物,按馮驥才先生自述,原名《市井人物》,感覺比俗世奇人貼切些?;蛘咭部山小睹駠?..
    boks閱讀 669評論 0 0

友情鏈接更多精彩內容