iOS 判斷第一個字符是數字還是漢字


    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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM