字符串替换字符串

时间:2011-01-07 15:37:55

标签: objective-c cocoa string

假设我有类似“此str1ng for test”的字符串,现在我想检查位置[i-1]和[i + 1]的字符是否都是字母,但[i]处的字符是数字,如下例所示单词“str1ng”然后将位置[i]中的字符替换为适当的字母表。 反之亦然。

我需要这个用于OCR输出的后期处理。 TQ

3 个答案:

答案 0 :(得分:2)

您可能会有更轻松的时间using Regular Expressions

答案 1 :(得分:1)

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

答案 2 :(得分:0)

您可以通过传递消息NSString来访问charAtIndex:(NSUInteger)index中的字符。 现在,您可以在您感兴趣的特定索引处获取ascii值,并根据您的要求进行更改。

NSString Ref

希望这有用!