【问题标题】:Replacing multiple strings with Objective-C用 Objective-C 替换多个字符串
【发布时间】:2023-03-08 01:44:01
【问题描述】:

我目前正在做一个实验,我将文本输入到 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”。

请帮忙。

【问题讨论】:

  • 如果我的回答解决了你的问题,你应该接受。您可能需要通读help sectionabout page 以了解有关堆栈溢出如何工作的更多信息。

标签: objective-c string nsstring nsarray


【解决方案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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-28
    • 2010-10-14
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多