用密钥A替换字典的NSarray中的NSString的一部分,并使用密钥B在字典的相同NSarray中替换字符串

时间:2015-05-13 11:58:42

标签: ios objective-c dictionary nsstring nsarray

我有以下格式的字典数组。

mainArray[0] = { "key1" : "aText", "key2" :"Text to replace A" }
mainArray[1] = { "key1" : "bText", "key2" :"Text to replace B" }

等等。

我有一个可以包含任何随机文本的nsstring。但是如果字符串中出现“aText”,则必须将相应的key2值替换为“要替换A的文本”,对于数组的其余部分也是如此。

如何通过 /使用任何循环来完成这项工作?

注:

我目前的解决方案如下:

NSArray arrayForKey1 = [mainArray valueForKey:@"key1"]; 
NSArray arrayForKey2 = [mainArray valueForKey:@"key2"]; 

for (int i = 0; i < mainArray.count; i ++) { 
   MyString = [MyString stringByReplacingOccurrencesOfString : [arrayForKey1 objectAtIndex:i]
                                                  withString : [arrayForKey2 objectAtIndex:i]
                                                     options : NSCaseInsensitiveSearch
                                                       range : NSMakeRange(0, MyString.length)
              ]; 
}

1 个答案:

答案 0 :(得分:0)

如果您想将key1映射到key2aTextText to replace a密钥将毫无用处。

你可能拥有的是:

NSMutableString *input = [@"aText apple bText banana cText carrot" mutableCopy];
NSDictionary *replacements = { @"aText" : @"Text to replace a",
                               @"bText" : @"Text to replace b",
                               @"cText" : @"Text to replace c" };


for (NSString *rep in replacements)
{
    [input replaceOccurrencesOfString:rep withString:[replacements objectForKey:rep]];
}

只要替换字符串不包含任何搜索字符串,这将有效,否则它们可以被替换两次。