2015-05-26 3 views
0

У меня есть требование, когда в первой букве всех слов в предложении нужно заглавную. Я достиг этого через код нижеiOS - Капитализация строки, за которой следует число

myString = [myString capitalizedString]; 

Но есть проблема с этим .. если слово начинается с Численным например, «32abc», после капитализации она меняется на «32Abc». Мне нужно, чтобы это было «32abc».

Справка будет принята с благодарностью.

+0

что, если у вас есть @ "32Abc", вы хотите для @ "32abc" или @ "32Abc"? –

+0

Если это @ "32Abc", оно должно отображаться как @ "32Abc". – bhoomi

ответ

1

Метод 1

NSString *input = @"32abc"; 
/* get first char */ 
NSString *firstChar = [input substringToIndex:1]; 

/* remove any diacritic mark */ 
NSString *folded = [firstChar stringByFoldingWithOptions:NSDiacriticInsensitiveSearch locale:[NSLocale currentLocale]]; 

/* create the new string */ 
NSString *capitalisedSentence = [[folded uppercaseString] stringByAppendingString:[input substringFromIndex:1]]; 

Метод 2 (оптимизированная)

NSString *input = @"32abc"; 
NSString *capitalisedSentence = [input stringByReplacingCharactersInRange:NSMakeRange(0,1) 
                  withString:[[input substringToIndex:1] capitalizedString]]; 
+0

Я думаю, что OP говорил о предложениях, а не о слове «32abc». – Sulthan

+0

@ Sulthan это будет делать независимо от предложения или слова. –

+0

input = @ "Это предложение с 32abc." Ожидаемый результат (см. OP) - «Это предложение с 32abc». – Sulthan

0

Попробуйте это:

myString = [myString stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:[[myString substringToIndex:1] uppercaseString]]; 
Смежные вопросы