中英文混排,获取字符串长度(中文字符数)
将一个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;
}
网友评论