美文网首页程序员
iOS字符串处理

iOS字符串处理

作者: senpaiLi | 来源:发表于2018-11-28 18:35 被阅读8次
    一、NSCharacterSet的使用

    NSCharacterSet是一个字符集合,利用好这个类,可以更加方便的对字符串进行操作。

    比如"abcdefghijklmnfwafajkfjawifa",需求要将这段字符中的"f"、"a"去掉,我们大概会这么做:

        NSString *str = @"abcdefghijklmnfwafajkfjawifa";
        NSInteger length = str.length;
        
        NSString *removeStr = @"af";
        NSMutableString *resultStr = [NSMutableString string];
        for (int i = 0; i < length; i ++) {
            NSString *indexStr = [str substringWithRange:NSMakeRange(i, 1)];
            if (![removeStr containsString:indexStr]) {
                [resultStr appendString:indexStr];
            }
        }
        
        NSLog(@"%@",resultStr);
    

    有心的可以算一下时间复杂度,这真的是一段看起来就很烦躁的代码。

    如果用NSCharacterSet进行处理:

        NSString *str = @"abcdefghijklmnfwafajkfjawifa";
        NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"af"];
        
        NSString *resultStr = [str stringByTrimmingCharactersInSet:set];
        
        NSLog(@"%@",resultStr);
    

    stringByTrimmingCharactersInSet:缩减NSCharacterSet里面的字符。

    NSCharacterSet的创建:

    除了自己拼接string的方式,还可以使用以下类方法,直接获取一个想要的字符集合

    /** 常用快捷方法集合  */ 
    + controlCharacterSet 
    + whitespaceCharacterSet //空格 
    + whitespaceAndNewlineCharacterSet //空格和换行符 
    + decimalDigitCharacterSet //0-9的数字 
    + letterCharacterSet //所有字母 
    + lowercaseLetterCharacterSet //小写字母 
    + uppercaseLetterCharacterSet //大写字母 
    + alphanumericCharacterSet //所有数字和字母(大小写不分) 
    + punctuationCharacterSet //标点符号 
    + newlineCharacterSet //换行
    
    /** URL相关快捷方法集合  */ 
    + URLUserAllowedCharacterSet 
    + URLPasswordAllowedCharacterSet  
    + URLHostAllowedCharacterSet 
    + URLPathAllowedCharacterSet //路径允许使用的字符集合
    + URLQueryAllowedCharacterSet //参数允许使用的字符集合
    + URLFragmentAllowedCharacterSet 
    
    二、rangeOfComposedCharacterSequencesForRange、rangeOfComposedCharacterSequenceAtIndex

    每一个中文或者英文在NSString中的length均为1,但是一个Emoji的length的长度为2或者4,如果使用substringToIndex可能存在把Emoji截断而导致乱码的情况。

    这两个方法,可以获取当前范围或者当前index下的完整字符,避免乱码情况的出现。

    相关文章

      网友评论

        本文标题:iOS字符串处理

        本文链接:https://www.haomeiwen.com/subject/kdzaqqtx.html