在nsstring中查找并替换所有内容

时间:2012-03-20 12:07:07

标签: objective-c ios ios4 nsstring

我正在尝试查找单词列表,如果匹配我正在替换。如果匹配的词出现不止一次,它就不会被替换。

我认为我需要使用while而不是if循环,但我无法使其工作。

我在挣扎请让我知道

    NSString *mymessage = @"for you for your information at you your at fate";

    NSMutableArray *full_text_list = [[NSMutableArray alloc]init];
    [full_text_list addObject:@"for"];
    [full_text_list addObject:@"for your information"];
    [full_text_list addObject:@"you"];
    [full_text_list addObject:@"at"];

    NSMutableArray *short_text_list = [[NSMutableArray alloc]init];
    [short_text_list addObject:@"4"];
    [short_text_list addObject:@"fyi"];
    [short_text_list addObject:@"u"];
    [short_text_list addObject:@"@"];

    for(int i=0;i<[full_text_list count];i++)
    {
        NSRange range = [mymessage rangeOfString:[full_text_list objectAtIndex:i]];

        if(range.location != NSNotFound) {
            NSLog(@"%@ found", [full_text_list objectAtIndex:i]);
            mymessage = [mymessage stringByReplacingCharactersInRange:range withString:[short_text_list objectAtIndex:i]];
        }


    }

3 个答案:

答案 0 :(得分:15)

你不必重新发明轮子;可可为你做到了......

代码:

NSString* message = @"for you for your information at you your at fate";

NSMutableArray* aList = [[NSMutableArray alloc] initWithObjects:@"for your information",@"for",@"you ",@"at ",nil];
NSMutableArray* bList = [[NSMutableArray alloc] initWithObjects:@"fyi",@"4",@"u ",@"@ ",nil];

for (int i=0; i<[aList count];i++)
{
    message = [message stringByReplacingOccurrencesOfString:[aList objectAtIndex:i] 
                                                 withString:[bList objectAtIndex:i]];
}

NSLog(@"%@",message);

提示: 我们将用bList [0]替换aList [0]的每一个出现,用bList [1]替换aList [1],依此类推......; - )

答案 1 :(得分:3)

查看NSString的stringByReplacingOccurrencesOfString:withString:method。

答案 2 :(得分:2)

你的字符串(myMessage)包含“for”字3次。当for循环第一次执行时,它将“for”替换为“4”,在第一次执行for循环后,你的字符串变得像“4你4你的命运在你的命运”。因为“为了你的信息”已成为“4你的信息”。它也取代了第三个“for”。

同样的方法是将“at”替换为“in4mation”一词并变得像“in4m @ ion”,最后你得到一个新的字符串,如“4 u 4 ur in4m @ ion @ u ur @ f @ e ”

我的英语不太好,我希望你明白我的意思。