Подтвердить что ты не робот

Получить первую букву каждого слова в строке с помощью objective-c

Пример того, что я пытаюсь сделать:

String = "Это мое предложение"

Я хочу получить это как результат: "TIMS"

Я борюсь с objective-c и строками по какой-то причине

4b9b3361

Ответ 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.