Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何确定NSString的第一个字符是否为字母_Objective C_Nsstring - Fatal编程技术网

Objective c 如何确定NSString的第一个字符是否为字母

Objective c 如何确定NSString的第一个字符是否为字母,objective-c,nsstring,Objective C,Nsstring,在我的应用程序中 我需要知道字符串的第一个字符是否为字母 我得到的字符串的第一个字符是这样的 NSString *codeString; NSString *firstLetter = [codeString substringFromIndex:1]; 我可以通过与a,b,c,.*的比较来了解它 if([firstLetter isEqualToString "a"] || ([firstLetter isEqualToString "A"] || ([firstLetter isEqua

在我的应用程序中

我需要知道字符串的第一个字符是否为字母

我得到的字符串的第一个字符是这样的

NSString *codeString;
 NSString *firstLetter = [codeString substringFromIndex:1];
我可以通过与a,b,c,.*的比较来了解它

if([firstLetter isEqualToString "a"] || ([firstLetter isEqualToString "A"] || ([firstLetter isEqualToString "b"] ......)
但还有其他方法可以知道吗

我需要为字母和符号显示不同的颜色

我怎样才能用简单的方法实现它呢?

首先,您的产品线:

NSString *firstLetter = [codeString substringFromIndex:1];
没有得到第一个字母。这将为您提供一个新字符串,该字符串包含除第一个字符外的所有原始字符串。这与你想要的正好相反。你想要:

NSString *firstLetter = [codeString substringToIndex:1];
但是有一种更好的方法来判断第一个字符是否是字母

unichar firstChar = [[codeString uppercaseString] characterAtIndex:0];
if (firstChar >= 'A' && firstChar <= 'Z') {
    // The first character is a letter from A-Z or a-z
}
在一些情况下,这并不像预期的那样有效
unichar
仅包含16位字符。但是
NSString
值实际上可以包含一些32位字符。示例包括许多表情符号。所以这个代码可能会给出一个误报。理想情况下,您希望这样做:

NSRange first = [codeString rangeOfComposedCharacterSequenceAtIndex:0];
NSRange match = [codeString rangeOfCharacterFromSet:[NSCharacterSet letterCharacterSet] options:0 range:first];
if (match.location != NSNotFound) {
    // codeString starts with a letter
}        
NSRange first = [codeString rangeOfComposedCharacterSequenceAtIndex:0];
NSRange match = [codeString rangeOfCharacterFromSet:[NSCharacterSet letterCharacterSet] options:0 range:first];
if (match.location != NSNotFound) {
    // codeString starts with a letter
}