美文网首页程序员
NSCharacterSet去除字符串中某个字符或文字

NSCharacterSet去除字符串中某个字符或文字

作者: 鄂北 | 来源:发表于2018-08-23 16:03 被阅读2次

    在app中经常需要处理用户的输入,去除输入文字中的空格或某个字符或者需要限制用户只能输入数字等,在这里小编给大家简单介绍几个处理方法

    一:去除文字中某个字符或文字
    方法一:

        NSString * targetStr1 = @" 今3天1 我2们s天气 很好 ";
        NSString * str1 = @" 3s";
        NSMutableString * resultStr1 = [[NSMutableString alloc] init];
        for (int i = 0; i<targetStr1.length; i++) {
            //截取每个字符
            NSString * indexStr = [targetStr1 substringWithRange:NSMakeRange(i, 1)];
            //判断str1中是否包含indeStr,如果不包含就将indexStr拼接到resultStr中
            if (![str1 containsString:indexStr]) {
                [resultStr1 appendString:indexStr];
            }
        }
        NSLog(@"方法一:%@",resultStr1);
    
    屏幕快照 2018-08-23 下午2.52.53.png

    方法二:

    // 方法二
        NSString * targetStr2 = @" 今3天1 我2们s天气 很好 ";
        NSString * str2 = @" 3s";
        for (int i = 0; i<str2.length; i++) {
            //截取每个字符
            NSString * indexStr = [str2 substringWithRange:NSMakeRange(i, 1)];
            //用空字符替换str中的indexStr
            targetStr2=[targetStr2 stringByReplacingOccurrencesOfString:indexStr withString:@""];
        }
        NSLog(@"方法二:%@",targetStr2);
    
    屏幕快照 2018-08-23 下午2.55.50.png

    方法三:

        NSString * targetStr3 = @" 今3天1 我2们s天气 很好 ";
        NSString * str3 = @" 3s";
        // NSCharacterSet是个字符集  characterSetWithCharactersInString是将字符串转化为字符集
        NSCharacterSet * characterSet = [NSCharacterSet characterSetWithCharactersInString:str3];
        // componentsSeparatedByCharactersInSet根据字符集将字符串拆分为数组,数组中不包含字符集中的字符(setArr3就是根据@" 3s"将targetStr3拆分为字符串数组,数组中不包含@" ",@"3",@"s"这三个字符)
        NSArray * setArr3 = [targetStr3 componentsSeparatedByCharactersInSet:characterSet];
        // 将字符串数组拼接成字符串
        NSString * resultStr3 = [setArr3 componentsJoinedByString:@""];
        NSLog(@"方法三:%@",resultStr3);
    
    屏幕快照 2018-08-23 下午2.57.41.png

    NSCharacterSet参考
    学会NSCharacterSet,再也不怕各种字符串处理!!

    二:去除前后字符
    想要去除前后的某个字符,用一的方法只需先获取第一个和最后一个字符,再判断是否等于或者包含某个字符,如果是则去除;方法二也是先获取第一个和最后一个字符,然后使用字符stringByReplacingOccurrencesOfString:@"" withString:@""方法替换。
    这里主要讲第三个方法,也推荐用第三个方法

        NSString * goalStr1 = @" 1今天s 1天2气很8好4";
        // 去除前面空格
        NSString * whitespaceStr1 = [goalStr1 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
        NSLog(@"去除前面空格:%@",whitespaceStr1);
        
        // 去除0-9的数字
        NSString * digitStr2 = [goalStr1 stringByTrimmingCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]];
        NSLog(@"去除前后0-9的数字:%@",digitStr2);
        
        // 自定义去除某个字符
        NSCharacterSet * set = [NSCharacterSet characterSetWithCharactersInString:@" 14"];
        NSString * setStr = [goalStr1 stringByTrimmingCharactersInSet:set];
        NSLog(@"去掉前后某个字符:%@",setStr);
    

    /**
    * whitespaceCharacterSet //空格
    * whitespaceAndNewlineCharacterSet //空格和换行符
    * decimalDigitCharacterSet //0-9的数字
    * letterCharacterSet //所有字母
    * lowercaseLetterCharacterSet //小写字母
    * uppercaseLetterCharacterSet //大写字母
    * alphanumericCharacterSet //所有数字和字母(大小写不分)
    * punctuationCharacterSet //标点符号
    * newlineCharacterSet //换行
    */


    屏幕快照 2018-08-23 下午3.17.34.png

    三:限制textfield只能输入数字

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
        NSCharacterSet * charSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet];
        NSString * filteredStr = [[string componentsSeparatedByCharactersInSet:charSet] componentsJoinedByString:@""];
        if ([string isEqualToString:filteredStr]) {
            return YES;
        }
        return NO;
    }
    

    filteredStr是去除了非数字字符后的字符串,然后再判断filteredStr和原来的string是否相同,如果相同说明filteredStr为数字,则可以说明输入的为数字

    相关文章

      网友评论

        本文标题:NSCharacterSet去除字符串中某个字符或文字

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