假设我有字符串像“this str1ng for test”现在我想检查位置[i-1]和[i + 1]上的字符是否都是字母表,但[i]处的字符是数字,就像这个例子中的单词“str1ng”那样,那么位置[i]中的字符被适当的字母表所代替。 ,反之亦然。在字符串中替换字符
我需要这个用于输出OCR的后期处理。 TQ
假设我有字符串像“this str1ng for test”现在我想检查位置[i-1]和[i + 1]上的字符是否都是字母表,但[i]处的字符是数字,就像这个例子中的单词“str1ng”那样,那么位置[i]中的字符被适当的字母表所代替。 ,反之亦然。在字符串中替换字符
我需要这个用于输出OCR的后期处理。 TQ
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;
}
您可能有一个更容易的时间using Regular Expressions。
你可以通过传递消息charAtIndex:(NSUInteger)index
在NSString
访问字符。 现在,您可以在您感兴趣的特定索引处获取ascii值,并根据您的要求进行更改。
希望这是有帮助的!