прописные буквы не пишутся с заглавной буквы правильно, начиная с цифр? - PullRequest
4 голосов
/ 07 марта 2012

Я использую метод NSString [myString capitalizedString], чтобы использовать для заглавных букв все слова моей строки.

Однако использование заглавных букв не очень хорошо для слов, начинающихся с цифр.

i.e. 2nd chance

становится

2Nd Chance

Даже если n не первая буква слова.

спасибо

Ответы [ 2 ]

5 голосов
/ 07 марта 2012

Вы должны найти собственное решение этой проблемы. Apple docs заявляет, что вы не можете получить указанное поведение, используя эту функцию для строк из нескольких слов и для строк со специальными символами.Вот довольно грубое решение

NSString *text = @"2nd place is nothing";

// break the string into words by separating on spaces.
NSArray *words = [text componentsSeparatedByString:@" "];

// create a new array to hold the capitalized versions.
NSMutableArray *newWords = [[NSMutableArray alloc]init];

// we want to ignore words starting with numbers.
// This class helps us to determine if a string is a number.
NSNumberFormatter *num = [[NSNumberFormatter alloc]init];

for (NSString *item in words) {
    NSString *word = item; 
    // if the first letter of the word is not a number (numberFromString returns nil)
    if ([num numberFromString:[item substringWithRange:NSMakeRange(0, 1)]] == nil) {
        word = [item capitalizedString]; // capitalize that word.
    } 
    // if it is a number, don't change the word (this is implied).
    [newWords addObject:word]; // add the word to the new list.
}

NSLog(@"%@", [newWords description]);
1 голос
/ 07 марта 2012

К сожалению, похоже, что это общее поведение прописной строки.

Возможно, не очень удачным решением проблемы было бы заменить каждое число строкой перед преобразованием, а затем изменить его обратно.

Итак, "2-й шанс" -> "xyznd шанс" -> "Xyznd Chance" -> "2-й шанс"

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