美文网首页
iOS 字符串获取是否存在或包含某个属性

iOS 字符串获取是否存在或包含某个属性

作者: 倒着游的鱼 | 来源:发表于2023-03-08 10:40 被阅读0次

    中英文混排,获取字符串长度(中文字符数)
    将一个NSString类型字符串获取的长度转换成类似ASCII编码的长度,如汉字2个字节,英文以及符号1个字节这个功能。
    用一个char*类型的字符串,然后自己遍历一遍,将它整理为类似ASCII编码的格式,用到 [NSString cStringUsingEncoding:NSUnicodeStringEncoding]函数获得一个const char*指针,然后对这个字符串进行遍历,遇/0就跳过,否则length+1,以此方法解决此问题。

    1.中英文混排,获取字符串长度(中文字符数)

    -  (int)convertToInt:(NSString *)strtemp {
        
        int strlength = 0;
        char* p = (char*)[strtemp cStringUsingEncoding:NSUnicodeStringEncoding];
        for (int i=0 ; i<[strtemp lengthOfBytesUsingEncoding:NSUnicodeStringEncoding] ;i++) {
            if (*p) {
                p++;
                strlength++;
            }
            else {
                p++;
            }
        }
        return (strlength+1)/2;
    }
    

    2.判断一个字符是否是URL

    - (BOOL)JudgeURLString:(NSString *)string{
        
        NSError *error;
        NSDataDetector *dataDetector=[NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:&error];
        NSArray *arrayOfAllMatches = [dataDetector matchesInString:string options:NSMatchingReportProgress range:NSMakeRange(0, string.length)];
        NSLog(@"arrayOfAllMatches-----%@",arrayOfAllMatches);
        
        return arrayOfAllMatches.count ? YES : NO;
    }
    

    3.判断字符串中是否包含数字

    - (BOOL)isStringContainNumberWith:(NSString *)str {
        
        NSRegularExpression *numberRegular = [NSRegularExpression regularExpressionWithPattern:@"[0-9]" options:NSRegularExpressionCaseInsensitive error:nil];
        NSInteger count = [numberRegular numberOfMatchesInString:str options:NSMatchingReportProgress range:NSMakeRange(0, str.length)];
        //count是str中包含[0-9]数字的个数,只要count>0,说明str中包含数字
        NSLog(@"是否包含数字-----%zd",count);
        
        if (count > 0) {
            return YES;
        }
        else {
            return NO;
        }
    }
    

    4.判断一个字符是否包含字母

    - (BOOL)isStringContainA_ZWith:(NSString *)string{
        
        NSRegularExpression *numberRegular = [NSRegularExpression regularExpressionWithPattern:@"[A-Za-z]" options:NSRegularExpressionCaseInsensitive error:nil];
        NSInteger count = [numberRegular numberOfMatchesInString:string options:NSMatchingReportProgress range:NSMakeRange(0, string.length)];
        NSLog(@"是否包含字母-----%zd",count);
        
        if (count > 0) {
            return YES;
        }
        else {
            return NO;
        }
        
        // 此方法不准确   NSString *regex =@"[A-Za-z]";
        //    NSPredicate*predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
        //    BOOL resurt = [predicate evaluateWithObject:string];
        //    NSLog(@"是否包含字母-----%d",resurt);
        //    return resurt;
    }
    

    相关文章

      网友评论

          本文标题:iOS 字符串获取是否存在或包含某个属性

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