3

我有一个带字符串的数组。检查数组中每个字符串的第一个字符是否来自拉丁字母的最佳方法是什么?

4

4 回答 4

7

基本上你可以使用这样的字符集:

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

这个例子不言自明:-)

于 2012-11-06T17:07:24.877 回答
2

这取决于你是在处理 Objective-C 对象还是 C(我假设是 Objective-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');
于 2012-11-06T17:10:13.207 回答
1

简单的oneliner:

if ( [string length] && iswalpha([string characterAtIndex:0]) )
{
    // stuff
}
于 2012-11-06T17:12:51.817 回答
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 @ [ ] $ % ^ ......
}
于 2014-07-01T19:54:12.920 回答