Замена символов в строке - PullRequest
0 голосов
/ 07 января 2011

предположим, у меня есть строка типа "this str1ng for test", теперь я хочу проверить, являются ли символы в позициях [i-1] и [i + 1] алфавитными, а символ в [i] является числом, как в этом примере слово "str1ng", затем символ в позиции [i] заменяется соответствующим алфавитом. или наоборот.

Мне нужно это для постобработки для вывода OCR. TQ

Ответы [ 3 ]

2 голосов
/ 07 января 2011

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

1 голос
/ 07 января 2011

NSString являются неизменяемыми, поэтому вам придется создать из него новую NSMutableString и мутировать эту копию, либо выделить буфер unichar*, скопировать данные из строки NSString, выполнить исправление и затем заново создатьновый NSString от результата.Как только вы работаете с изменяемой копией строки, вы можете использовать любой алгоритм, который вам нужен.

Так что вам понадобится такая функция:

- (NSString*)correctOCRErrors:(NSString*)string
{
    BOOL hasError = NO;
    for (int i = 0; i < [string length]; ++ i)
    {
        if (isIncorrect([string characterAtIndex:i]))
        {
            hasError = YES;
            break;
        }
    }

    if (hasError)
    {
        unichar* buffer = (unichar*)malloc([string length]);
        for (int i = 0; i < [string length]; ++ i)
        {
            unichar chr = [string characterAtIndex:i];
            if (isIncorrect(chr))
                chr = correctChar(chr);
            buffer[i] = chr;
        }
        string = [[[NSString alloc] initWithCharactersNoCopy:buffer length:[string length] freeWhenDone:YES] autorelease];
    }

    return string;
}
0 голосов
/ 07 января 2011

Вы можете получить доступ к символу в NSString, передав сообщение charAtIndex:(NSUInteger)index. Теперь вы можете получить значение ascii по интересующему вас индексу и изменить его в соответствии с вашими требованиями.

NSString Ссылка

Надеюсь, это полезно!

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