NSString
имеет метод с именем capitalizedString
:
Возвращаемое значение
Строка с первым символом из каждого слова в получателе изменилась на соответствующее значение в верхнем регистре, а все остальные символы установлены на соответствующие значения в нижнем регистре.
NSString *str = @"AlgeBra";
NSString *other = [str capitalizedString];
NSLog (@"Old: %@, New: %@", str, other);
Edit:
Только что увидел, что вы хотели бы убрать и акценты. Вы можете пройти ряд шагов:
// original string
NSString *str = @"ÁlgeBra";
// convert to a data object, using a lossy conversion to ASCII
NSData *asciiEncoded = [str dataUsingEncoding:NSASCIIStringEncoding
allowLossyConversion:YES];
// take the data object and recreate a string using the lossy conversion
NSString *other = [[NSString alloc] initWithData:asciiEncoded
encoding:NSASCIIStringEncoding];
// relinquish ownership
[other autorelease];
// create final capitalized string
NSString *final = [other capitalizedString];
В документации для dataUsingEncoding:allowLossyConversion:
прямо говорится, что буква & lsquo; Á & rsquo; преобразуется в & lsquo; A & rsquo; при конвертации в ASCII.