如何替换NSString使用数组到另一个数组

时间:2010-11-10 10:35:40

标签: iphone objective-c arrays

您好 如何将NSString使用数组替换为另一个数组 像这样

@"Hello world"

{a,b,c,d,e,...} - > {1,2,3,4,5,..} = @“H5llo worl4”

并且可以在没有数组的情况下替换吗? 完全我想将一个字符串的10个字符替换为另外10个字符。 我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

循环遍历数组并依次替换每个字符:

// Get the two arrays of characters to replace and their replacements
NSArray *fromArray = [NSArray arrayWithObjects:@"a", @"b", @"c", @"d", @"e", nil];
NSArray *toArray = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", nil];

// Make a mutable version of our string
NSMutableString *newString = [NSMutableString stringWithString:@"Hello World"];

// Deal with each replacement in turn
for (uint n = 0; n < [fromArray count]; ++n)
    [newString replaceOccurrencesOfString:[fromArray objectAtIndex:n] withString:[toArray objectAtIndex:n] options:NSLiteralSearch range:NSMakeRange(0, [newString length])];

// Output the new string
NSLog(@"%@", newString);

这段代码不太好 - 如果两个数组的长度不同会怎么样?

答案 1 :(得分:0)

您可以使用NSDictionary来存储关联数组(包含替换字符串及其键)。

然后,您可以使用 fast enumeration 遍历NSDictionary中的元素,以便您可以使用stringByReplacingOccurrencesOfString:withString:options:range:替换它。

这种方法比简单地调用replaceOccurrencesOfString:withString:更好,因为通过指定范围可以避免在已经替换的子字符串上重新循环,并且还可以避免应用链式替换(即a->i, i->4