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;
}