我在iPhone上使用cocoa,我正在寻找一些方法,如:
NSString *s = @"Hello";
[s isStringStartsWithUpperCaseCharacter]
-(BOOL) isStringStartsWithUpperCaseCharacter;
字符串的第一个字母可能是非ASCII字母,如:Á
,Ç
,Ê
...
有什么方法可以帮助我吗?
我在文档中看到有一些方法可以将字符串转换为大写和小写但是没有方法可以询问字符串是lowercase
还是uppercase
。
答案 0 :(得分:26)
BOOL isUppercase = [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:[s characterAtIndex:0]];
修改强>
我不确定uppercaseLetterCharacterSet
和capitalizedLetterCharacterSet
之间的区别。如果有人发现,请发表评论!
第二次编辑:
感谢Ole Begemann,了解这些差异。我编辑了代码,使其按预期工作。
答案 1 :(得分:1)
return [myString rangeOfCharacterFromSet: [NSCharacterSet uppercaseLetterCharacterSet]].location==0;
这应该有效,但这是解决这个问题的一种代价高昂的方法。
答案 2 :(得分:-1)
我还不知道Objective-C但你可以将第一个字符放在另一个字符串中并“toupper”它...然后将它与原始字符串的第一个字符进行比较..如果它们相等,则第一个字符是大写字母。
答案 3 :(得分:-1)
首先,如果您只是想让第一个字符大写,请尝试
- (NSString *)capitalizedString;
否则,您可以使用类似
的内容NSString *firstCharacter = [s substringWithRange:NSMakeRange(0,1)];
if (firstCharacter != nil && [firstCharacter isEqualToString:[firstCharacter uppercaseString]]) {
//first character was capitalized
} else {
//first character was lowercase
}
答案 4 :(得分:-1)
这是Nikolai的回答。
BOOL (^startsWithUppercase)(NSString *) = ^(NSString *string) {
return [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:[string characterAtIndex:0]];
};
这样称呼:
NSString *name = @"Mark";
if (startsWithUppercase(name)) {
// do something
}
另一种选择是将其放入NSString的类别中。