辞書を使用して、文字列内の一部の文字を他の文字に置き換えたいと思います。
たとえば、すべての "a" を "1" に置き換え、すべての "1" を "9" に置き換える必要があります。私が望んでいないのは、すべての「a」が2回置き換えられて「9」になることです。すべての文字を一度だけ置換する必要があります。
次のコードを使用してこれを機能させましたが、より効率的に実行できるように感じます。これは本当に私にできる最善のことですか、それとも私のコードを改善するのを手伝ってくれますか?
NSDictionary *replacements = [NSDictionary dictionaryWithObjectsAndKeys:
// Object, Key,
@"1", @"a",
@"2", @"b",
@"3", @"c",
@"9", @"1",
@"8", @"2",
@"7", @"3",
nil];
NSString *string = @"abc-123";
NSMutableString *newString = [NSMutableString stringWithCapacity:0];
for (NSInteger i = 0; i < string.length; i++)
{
NSString *c = [NSString stringWithFormat:@"%C", [string characterAtIndex:i]];
id replacement = [replacements objectForKey:c];
if (replacement != nil) {
[newString appendString:replacement];
} else {
[newString appendString:c];
}
}
NSLog(@"newString: %@", newString); // newString: 123-987 (Works!)
明確にするために、このコードは私にとっては機能していますが、非常に非効率的だと感じています。私はそれを改善する方法を探しています。
ありがとうございました。