美文网首页
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