用Objective-C替换多个字符串

时间:2013-10-14 05:37:45

标签: objective-c string nsstring nsarray

我正在进行一项实验,我将文本输入到UITextField中,然后搜索文本以查看其中是否包含某些字符串。如果找到某个文本,它应该替换它,并将其发送到UITextView。 (想想一个超级简化的翻译员)

我遇到的问题是它只发送我上次配对的文字。  例如,

NSString *mainString = [[NSString alloc] initWithString:field.text];
NSArray *stringsToReplace = [[NSArray alloc] initWithObjects:@"The",@"dog",@"cried", nil];
NSArray *stringsReplaceBy = [[NSArray alloc] initWithObjects:@"ehT",@"god",@"deirc", nil];
for (int i=0; i< [stringsReplaceBy count]; i++)
{
    look.text = [mainString stringByReplacingOccurrencesOfString:[stringsToReplace objectAtIndex:i] withString:[stringsReplaceBy objectAtIndex:i]];
}

当我输入时,“狗哭了。”应该说“ehT god deirc。”然而,它正在响应“狗deirc”。

请帮忙。

1 个答案:

答案 0 :(得分:1)

您在同一个字符串上调用stringByReplaceingOccurencesOfString三次:

for (int i=0; i< [stringsReplaceBy count]; i++)
{
    look.text = [mainString stringByReplacingOccurrencesOfString:[stringsToReplace objectAtIndex:i] withString:[stringsReplaceBy objectAtIndex:i]];
}

相反,将结果保存到另一个字符串对象中:

NSString *modifiedString = mainString;
for (int i=0; i< [stringsReplaceBy count]; i++)
{
    modifiedString = [modifiedString stringByReplacingOccurrencesOfString:[stringsToReplace objectAtIndex:i] withString:[stringsReplaceBy objectAtIndex:i]];
}
look.text = modifiedString;