"[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
は、不変です結果。変更可能な文字列のコピーを作成したら、必要なアルゴリズムを使用できます。
だからあなたはそのような機能を持っている必要があります:
- (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あなたはそれから新しいNSMutableStringを作成し、このコピーを変異させ、またはunichar*
バッファを割り当てるために、NSStringのからデータをコピーし、補正を行う、その後から新しいNSString
を再作成する必要がありますので、
あなたがメッセージcharAtIndex:(NSUInteger)index
を渡すことによってNSString
内の文字にアクセスすることができます。 これで、興味のある特定のインデックスでascii値を取得し、要件に応じて変更することができます。
希望は、これは便利です!