You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.2 KiB
96 lines
2.2 KiB
1 year ago
|
//
|
||
|
// 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
|