// // NSString+Character.m // tongxin // // Created by Apple on 2019/8/10. // Copyright © 2019年 xTT. All rights reserved. // #import "NSString+Character.h" @implementation NSString (Character) - (NSInteger)getStringLenthOfBytes { NSInteger length = 0; for (int i = 0; i<[self length]; i++) { //截取字符串中的每一个字符 NSString *s = [self substringWithRange:NSMakeRange(i, 1)]; if ([self validateChineseChar:s]) { // NSLog(@" s 打印信息:%@",s); length +=2; }else{ length +=1; } // NSLog(@" 打印信息:%@ %ld",s,(long)length); } xLog(@"总长度:%ld", length); return length; } - (NSString *)subBytesOfstringToIndex:(NSInteger)index { NSInteger length = 0; NSInteger chineseNum = 0; NSInteger zifuNum = 0; for (int i = 0; i<[self length]; i++) { //截取字符串中的每一个字符 NSString *s = [self substringWithRange:NSMakeRange(i, 1)]; if ([self validateChineseChar:s]) { if (length + 2 > index) { return [self substringToIndex:chineseNum + zifuNum]; } length +=2; chineseNum +=1; } else { if (length +1 >index) { return [self substringToIndex:chineseNum + zifuNum]; } length+=1; zifuNum +=1; } } return [self substringToIndex:index]; } //检测中文或者中文符号 - (BOOL)validateChineseChar:(NSString *)string { NSString *nameRegEx = @"[\\u0391-\\uFFE5]"; if (![string isMatchesRegularExp:nameRegEx]) { return NO; } return YES; } //检测中文 - (BOOL)validateChinese:(NSString*)string { NSString *nameRegEx = @"[\u4e00-\u9fa5]"; if (![string isMatchesRegularExp:nameRegEx]) { return NO; } return YES; } - (BOOL)isMatchesRegularExp:(NSString *)regex { NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; return [predicate evaluateWithObject:self]; } @end