2011-01-07 37 views
0

"[this str1ng for test"]のような文字列があるとします。位置[i-1]と[i + 1]の文字が両方アルファベットで、[i]この例のように、単語 "str1ng"では、位置[i]の文字が適切なアルファベットに置き換えられます。 またはその逆。文字列内の文字の置換

OCR出力の後処理にはこの値が必要です。 TQ

答えて

1

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

もっと簡単な時間があるかもしれません。using Regular Expressionsあなたはそれから新しいNSMutableStringを作成し、このコピーを変異させ、またはunichar*バッファを割り当てるために、NSStringのからデータをコピーし、補正を行う、その後から新しいNSStringを再作成する必要がありますので、

0

あなたがメッセージcharAtIndex:(NSUInteger)indexを渡すことによってNSString内の文字にアクセスすることができます。 これで、興味のある特定のインデックスでascii値を取得し、要件に応じて変更することができます。

NSString Ref

希望は、これは便利です!

関連する問題