字符串中的字符替换
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
希望这有帮助!
【讨论】:
以上是关于字符串中的字符替换的主要内容,如果未能解决你的问题,请参考以下文章
java 替换文本中的所有指定的字符串,比如#*替换为sq, #**替换为we, 我使用了replaceAll进行的替换