我有以下格式的字典数组。
mainArray[0] = { "key1" : "aText", "key2" :"Text to replace A" }
mainArray[1] = { "key1" : "bText", "key2" :"Text to replace B" }
等等。
我有一个可以包含任何随机文本的nsstring。但是如果字符串中出现“aText”,则必须将相应的key2值替换为“要替换A的文本”,对于数组的其余部分也是如此。
如何通过nspredicates /使用任何循环来完成这项工作?
注:
我目前的解决方案如下:
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)
];
}
答案 0 :(得分:0)
如果您想将key1
映射到key2
,aText
和Text 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]];
}
只要替换字符串不包含任何搜索字符串,这将有效,否则它们可以被替换两次。