Отформатируйте текст из "HELLO, WORLD. КАК ВЫ?"на "Привет, мир. Как дела?"в ObjC (iOS)? - PullRequest
0 голосов
/ 21 июля 2011

Как сказано в названии, мне нужно отформатировать строку текста в формате, например: "ПРИВЕТ, МИР. КАК ВЫ?" в "Привет, мир. Как дела?", есть ли какой-нибудь стандартный способ сделать это в iOS? Или есть какой-нибудь пример кода?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 21 июля 2011

Я не знаю стандартного метода для этого, и я не думаю, что есть один.
Но NSString предоставляет такие методы: -(NSString *)capitalizedString;, который возвращает новую строку с первый символ каждого слова в верхнем регистре.После правильного разрыва строки вы можете использовать ее.Также подумайте о получении строки в нижнем регистре, используя: -(NSString *)lowercaseString.

1 голос
/ 21 июля 2011

Нет прямого способа заглавных букв первых символов предложений в абзаце. NSString просто имеет метод capitalizedString , который использует заглавные буквы для каждого слова.Вы должны создать свою собственную логику, чтобы достичь этого.Вы можете попробовать следующий код:

- (NSString *)captilizeParagraph:(NSString *)paragraph {

    if ([paragraph length] == 0) return paragraph;
    NSArray *sentences = [paragraph componentsSeparatedByString:@". "];
    NSMutableArray *capitalizedSentences = [NSMutableArray array];

    for (NSString *sentence in sentences) {

        sentence = [sentence lowercaseString];
        sentence = [sentence stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:[[sentence substringToIndex:1] uppercaseString]];
        [capitalizedSentences addObject:sentence];
    }

    NSString *capitalizedParagrah = [capitalizedSentences componentsJoinedByString:@". "];
    return capitalizedParagrah;
}

Примечание: В приведенном выше коде предполагается, что все предложения в абзаце заканчиваются символами ". " (точка и пробел), кромепоследнее предложение (может заканчиваться любым символом).Если предложение заканчивается некоторыми другими символами, такими как "? " или "! ", то этот метод возвращает не полностью отформатированную строку.

0 голосов
/ 18 августа 2012
-(NSString *)normalizeString{
    __block NSString *string = [self lowercaseString];
    string = [string stringByReplacingCharactersInRange:NSMakeRange(0, 1) withString:[[string substringToIndex:1] uppercaseString]];

    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[\\p{P}-[,]]" options:0 error:nil];
    [regex enumerateMatchesInString:string options:0 range:NSMakeRange(0, string.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
        if(result.range.location + 2 < string.length) string = [string stringByReplacingCharactersInRange:NSMakeRange(result.range.location + 2, 1) withString:[[self substringWithRange:NSMakeRange(result.range.location + 2, 1)] uppercaseString]];
    }];

    return string;
}

Если предположить, что 2 знака после пунктуации являются первыми символами следующего предложения, это работает.

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