字符串中的字符替换

Posted

技术标签:

【中文标题】字符串中的字符替换【英文标题】:Character replacing in a string 【发布时间】:2011-01-07 15:37:54 【问题描述】:

假设我有像“this str1ng for test”这样的字符串,现在我想检查位置 [i-1] 和 [i+1] 处的字符是否都是字母但 [i] 处的字符是数字,就像这个例子单词“str1ng”然后位置 [i] 处的字符被适当的字母替换。 反之亦然。

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

【问题讨论】:

【参考方案1】:

using Regular Expressions 你可能会更轻松。

【讨论】:

【参考方案2】:

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;

【讨论】:

【参考方案3】:

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

NSString Ref

希望这有帮助!

【讨论】:

以上是关于字符串中的字符替换的主要内容,如果未能解决你的问题,请参考以下文章

js 中如何替换字符串例如:

js 中如何替换字符串?

java 替换文本中的所有指定的字符串,比如#*替换为sq, #**替换为we, 我使用了replaceAll进行的替换

mybatis中的字符串替换

linux sed 如何替换字符串中的反斜杠\

Linux批量替换多个文件中字符串