2012-11-06 115 views

回答

7

基本上你可以使用的字符集,像這樣:

NSString* string = @"This is a string"; 
NSCharacterSet *letters = [NSCharacterSet letterCharacterSet]; 
if([letters characterIsMember:[string characterAtIndex:0]]) { 
    // This is a letter 
} 

的例子是不言而喻的:-)

+0

它會崩潰,如果'string'是空的。 – mvds

2

這取決於如果你要處理的Objective-C對象或C(我假定目標C,但可讓兩者都做)

Objective-C的 - 該數組是NSArrayNSStrings的:

  1. 取第一項:NSString *firstString = [array objectAtIndex:0];
  2. 取得一個字母的範圍:`NSRange lettersRange = [firstString rangeOfCharacterFromSet:[NSCharacterSet letterCharacterSet];
  3. 檢查範圍起始於字符串的開始:BOOL isFirstCharALetter = lettersRange.location = 0;

c - 接收陣列的char *(即char *[])的陣列:

  1. 讀取第一項:char *firstString = strings[0];
  2. 獲取字符串的第一個字符:char firstChar = firstString[0];
  3. 檢查的第一個字符是ASCII字符的字母範圍:BOOL isFirstCharALetter = (firstChar >= 'A' && firstChar <='Z') || (firstChar >= 'a' && firstChar <='z');
+0

這是假設什麼字符集?上次我用ASCII''Z'<'a''檢查,以便最後一個條件永遠是錯誤的。此外,「A-Z」和「a-z」之間還有一系列字符。 – mvds

+0

@mvds opps。我衝了那一點。現在修復。 –

1

簡單oneliner:

if ([string length] && iswalpha([string characterAtIndex:0])) 
{ 
    // stuff 
} 
0
//Defines only alphabet that we will compare with 
NSCharacterSet *alphaBetFromAToZ = [NSCharacterSet letterCharacterSet]; 
NSCharacterSet *numberFrom0To9 = [NSCharacterSet decimalDigitCharacterSet]; 

//My string 
NSString *myStringToCheck = @"String"; 

//Check if string is not empty and if so, make it a not empty string otherwise the app could throw up an exception 
myStringToCheck = ([myStringToCheck length] == 0) ? @" ":myStringToCheck; 

//Check if first string is from the alphabet 
if ([alphaBetFromAToZ characterIsMember:[myStringToCheck characterAtIndex:0]]) 
{ 
    //First character is from the alphabet 
} 
else if ([numberFrom0To9 characterIsMember:[myStringToCheck characterAtIndex:0]]) 
{ 
    //First character is a number 
} 
else 
{ 
    //First character is NOT from the alphabet and also is not a number, is something like @ [ ] $ %^...... 
} 
相關問題