2014-02-26 94 views

回答

3

你可以試試這個

NSString *testString = @"testabc123"; 
unichar character = [testString characterAtIndex:testString.length - 1]; 
if (isdigit(character)) { 
    NSLog(@"It's a digit"); 
} 
else if (isalpha(character)) { 
    NSLog(@"It's a character"); 
} 

isdigit是一個標準的C函數。

編輯:還增加了isalpha,因爲不是每個非數字都是一個字符。

+0

你不能用'unichar'參數調用'isdigit()'。從「man isdigit」:到'isdigit()'的參數必須可以表示爲'unsigned char'或者'EOF'的值。 –

+0

@MartinR:根據頭文件'ctype.h','isdigit()'的參數必須是一個int。據我瞭解,每個'unichar'('unsigned short')是一個有效的'int'。 – Marc

+1

該參數是一個int,但該函數不允許任意整數參數。它在手冊頁或http://pubs.opengroup.org/onlinepubs/009695399/functions/isdigit.html中有記錄:*「c參數是一個int值,應用程序應確保其值是一個字符可表示爲無符號字符或等於宏EOF的值,如果參數具有其他值,則行爲是未定義的。「* - 換句話說,如果字符串只使用0 .. 255,但是否則行爲是未定義的。 –

0

使用此功能在一個子與您的字符串的最後一個字符

-(BOOL)stringIsNumeric:(NSString *)str { 

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    NSNumber *number = [formatter numberFromString:str]; 
    return !!number; 

} 

使用它:

NSString * string = @"1234"; 
    NSString * lastChar = [string substringFromIndex:string.length-1]; 
    [self stringIsNumeric:lastChar]; 
相關問題