0

我目前正在做一个实验,将文本输入到 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”。然而,它的回应是“The dog deirc”。

请帮忙。

4

1 回答 1

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;
于 2013-10-14T05:41:47.153 回答