NSString *titleStr = @
"琳小兮"
;
//先截取字符串,拿到第一個字符
NSString *firstStr = [titleStr substringToIndex:1];
//判斷是不是中文開頭的
BOOL
isFirst = [self isChineseFirst:firstStr];
if
(isFirst)
NSLog(@
"第一個字符是中文開頭的--%@"
, firstStr);
else
{
//判斷是不是字母開頭的
BOOL
isA = [self MatchLetter:firstStr];
if
(isA)
NSLog(@
"第一個是字母開頭的--%@"
, firstStr);
else
NSLog(@
"--不是中文和字母開頭的--%@"
,titleStr);
}
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#pragma mark 正則表達式
-(
BOOL
)MatchLetter:(NSString *)str
{
//判斷是否以字母開頭
NSString *ZIMU = @
"^[A-Za-z]+$"
;
NSPredicate *regextestA = [NSPredicate predicateWithFormat:@
"SELF MATCHES %@"
, ZIMU];
if
([regextestA evaluateWithObject:str] == YES)
return
YES;
else
return
NO;
}
-(
BOOL
)isChineseFirst:(NSString *)firstStr
{
//是否以中文開頭(unicode中文編碼范圍是0x4e00~0x9fa5)
int
utfCode = 0;
void
*buffer = &utfCode;
NSRange range = NSMakeRange(0, 1);
//判斷是不是中文開頭的,buffer->獲取字符的字節數據 maxLength->buffer的最大長度 usedLength->實際寫入的長度,不需要的話可以傳遞NULL encoding->字符編碼常數,不同編碼方式轉換后的字節長是不一樣的,這里我用了UTF16 Little-Endian,maxLength為2字節,如果使用Unicode,則需要4字節 options->編碼轉換的選項,有兩個值,分別是NSStringEncodingConversionAllowLossy和NSStringEncodingConversionExternalRepresentation range->獲取的字符串中的字符范圍,這里設置的第一個字符 remainingRange->建議獲取的范圍,可以傳遞NULL
BOOL
b = [firstStr getBytes:buffer maxLength:2 usedLength:NULL encoding:NSUTF16LittleEndianStringEncoding options:NSStringEncodingConversionExternalRepresentation range:range remainingRange:NULL];
if
(b && (utfCode >= 0x4e00 && utfCode <= 0x9fa5))
return
YES;
else
return
NO;
}
|
