получить первую букву каждого слова в строке, используя target-c - PullRequest
12 голосов
/ 15 июля 2010

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

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

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

Я почему-то борюсь с целью-c и строками

Ответы [ 2 ]

32 голосов
/ 15 июля 2010

Наивное решение:

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]];
}
1 голос
/ 15 июля 2010

Вы всегда можете использовать метод cStringUsingEncoding: и просто повторять const char *.Или, лучше, вы можете использовать метод getCharacters:

Когда вы выполняете итерацию, вам просто нужно сделать цикл for и проверить, является ли предыдущий символ символом '', и добавить его во временную переменную.Если вы хотите использовать верхний регистр, просто используйте uppercaseString в конце.

для получения дополнительной информации см. Документ Apple: http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/occ/instm/NSString/getCharacters:range:

Иногда я также борюсь со строками, имена функций не очень похожи надругие языки, такие как c ++ / java, например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...