Найти и заменить все внутри nsstring - PullRequest
1 голос
/ 20 марта 2012

Я пытаюсь найти список слов, если совпадения я заменяю.код удара работает, но он не заменяет, если совпадающее слово встречается более одного раза.

И я думаю, что мне нужно использовать цикл вместо 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 ]

15 голосов
/ 20 марта 2012

Вам не нужно изобретать велосипед;Какао сделает это за вас ...

Код:

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);

ПОДСКАЗКА: Мы будем заменять каждый случайaList [0] с bList [0], aList [1] с bList [1] и т. д.;; -)

3 голосов
/ 20 марта 2012

Посмотрите на строку NSStringByReplacingOccurferencesOfString: withString: метод.

2 голосов
/ 20 марта 2012

Ваша строка (myMessage) содержит слово "for" 3 раза. Когда цикл for выполняется первый раз, он заменяет «for» на «4», после первого выполнения цикла for ваша строка становится похожей на «4 you 4 your in4mation at you your at судьба». Потому что «для вашей информации» стало «4 ваши данные». Он также заменил третье «для».

Таким же образом он заменяет слово "at" и на слово "in4mation" и становится похожим на "in4m @ ion", и, наконец, вы получаете новую строку, например "4 u 4 ur in4m @ ion @ u ur @ f @ e ».

Мой английский не очень хорош, надеюсь, вы поняли мою точку зрения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...