[英]How to check if my string starts with uppercase character
我在iPhone上使用cocoa,我正在尋找一些方法,如:
NSString *s = @"Hello";
[s isStringStartsWithUpperCaseCharacter]
-(BOOL) isStringStartsWithUpperCaseCharacter;
字符串的第一個字母可能是非ASCII字母,如: Á
, Ç
, Ê
...
有什么方法可以幫助我嗎?
我在文檔中看到有一些方法可以將字符串轉換為大寫和小寫但是沒有方法可以詢問字符串是lowercase
還是uppercase
。
BOOL isUppercase = [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:[s characterAtIndex:0]];
編輯:
我不確定uppercaseLetterCharacterSet
和capitalizedLetterCharacterSet
之間有什么區別。 如果有人發現,請發表評論!
第二編輯:
謝謝,Ole Begemann,了解差異。 我編輯了代碼,使其按預期工作。
return [myString rangeOfCharacterFromSet: [NSCharacterSet uppercaseLetterCharacterSet]].location==0;
這應該有效,但這是解決這個問題的一種昂貴的方法。
我還不知道Objective-C但你可以將第一個字符放在另一個字符串中並“toupper”它...然后將它與原始字符串的第一個字符進行比較..如果它們相等,則第一個字符是大寫。
首先,如果你只想讓第一個字符大寫,請嘗試
- (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
}
這是尼古拉的答案。
BOOL (^startsWithUppercase)(NSString *) = ^(NSString *string) {
return [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:[string characterAtIndex:0]];
};
像這樣稱呼它:
NSString *name = @"Mark";
if (startsWithUppercase(name)) {
// do something
}
另一個選擇是將它放在NSString的一個類別中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.