Получить первую букву каждого слова в строке с помощью objective-c
Пример того, что я пытаюсь сделать:
String = "Это мое предложение"
Я хочу получить это как результат: "TIMS"
Я борюсь с objective-c и строками по какой-то причине
Ответы
Ответ 1
Наивное решение:
NSMutableString * firstCharacters = [NSMutableString string];
NSArray * words = [@"this is my sentence" componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
for (NSString * word in words) {
if ([word length] > 0) {
NSString * firstLetter = [word substringToIndex:1];
[firstCharacters appendString:[firstLetter uppercaseString]];
}
}
Обратите внимание, что это глупость в разложении слов (просто пробег, что не всегда является лучшим подходом), и он не обрабатывает символы UTF16 +.
Если вам нужно обрабатывать символы UTF16 +, измените оператор if()
внутри цикла на:
if ([word length] > 0) {
NSString * firstLetter = [word substringWithRange:[word rangeOfComposedCharacterSequenceAtIndex:0]];
[firstCharacters appendString:[firstLetter uppercaseString]];
}
Ответ 2
Вы всегда можете использовать метод cStringUsingEncoding: и просто переименуйте const char *. Или лучше, вы можете использовать метод getCharacters:
Когда вы итерации, вам просто нужно сделать цикл for и проверить, является ли предыдущий символ символом '' и добавляет его к вашей временной переменной. Если вы хотите, чтобы он был прописным, просто используйте uppercaseString в конце.
см. apple doc для получения дополнительной информации:
http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/getCharacters:range:
Я также иногда борюсь со строками, имена функций на самом деле не похожи на другие языки, например С++/java.