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

シンプルなワンライナー:

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 に答える