假設我有字符串像「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值,並根據您的要求進行更改。
希望這是有幫助的!