2013-10-14 137 views
0

我目前正在做一個實驗,將文本輸入到UITextField中,然後搜索文本以查看它是否包含某些字符串。如果它發現某些文本,它應該替換它,並將其發送到UITextView。 (想想一個超簡化的翻譯器)用Objective-C替換多個字符串

我遇到的問題是,它只發送我最後配對的文本。 對於exammple,

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」。然而,它正在迴應「狗的狗狗」。

請幫忙。

+0

如果我的回答解決你的問題,你應該接受它。您可能需要閱讀[help section](http://stackoverflow.com/help)和[about page](http://stackoverflow.com/about)以獲取有關堆棧溢出如何工作的更多信息。 – Sebastian

回答

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;