как удалить определенные слова из строк?

#iphone #nsstring

#iPhone #nsstring

Вопрос:

У меня есть NSString * str, имеющая значение @»Мне нравится программировать и играть». Я должен удалить «I», «like» amp; «and» из моей строки, чтобы она выглядела как «Программирование игр».

Как я могу это сделать, есть идеи?

Ответ №1:

 NSString *newString = @"I like Programming and gaming.";
NSString *newString1 = [newString stringByReplacingOccurrencesOfString:@"I" withString:@""];
NSString *newString12 = [newString1 stringByReplacingOccurrencesOfString:@"like" withString:@""];
NSString *final = [newString12 stringByReplacingOccurrencesOfString:@"and" withString:@""];
  

Присвоено неправильной строковой переменной, отредактировано, теперь все в порядке

 NSLog(@"%@",final);
  

вывод: Программирование игр

Ответ №2:

 NSString * newString = [@"I like Programming and gaming." stringByReplacingOccurrencesOfString:@"I" withString:@""];
newString = [newString stringByReplacingOccurrencesOfString:@"like" withString:@""];
newString = [newString stringByReplacingOccurrencesOfString:@"and" withString:@""];

NSLog(@"%@", newString);
  

Ответ №3:

Более эффективно и поддерживаемо, чем выполнение нескольких stringByReplacing... вызовов последовательно:

 NSSet* badWords = [NSSet setWithObjects:@"I", @"like", @"and", nil];
NSString* str = @"I like Programming and gaming.";
NSString* result = nil;
NSArray* parts = [str componentsSeparatedByString:@" "];
for (NSString* part in parts) {
    if (! [badWords containsObject: part]) {
        if (! result) {
            //initialize result
            result = part;
        }
        else {
            //append to the result
            result = [NSString stringWithFormat:@"%@ %@", result, part];
        }
    }
}
  

Комментарии:

1. Виртуальный 1 за мысль, которая привела к долгому пути выполнения этого 😉

2. @Jordan — Это долгий путь, пока не останется около дюжины слов, которые нужно отфильтровать. К тому времени, когда будет отфильтровано более 100 слов, этот подход по сравнению с ними будет выглядеть совершенно компактным.

3. Я тебя слышу 😉 Вот почему v 1 😉

Ответ №4:

Это старый вопрос, но я хотел бы показать свое решение:

 NSArray* badWords = @[@"the", @"in", @"and", @"amp;",@"by"];
NSMutableString* mString = [NSMutableString stringWithString:str];

for (NSString* string in badWords) {
     mString = [[mString stringByReplacingOccurrencesOfString:string withString:@""] mutableCopy];
}

return [NSString stringWithString:mString];
  

Ответ №5:

Создайте изменяемую копию вашей строки (или инициализируйте ее как NSMutableString), а затем используйте replaceOccurrencesOfString:withString:options:range: для замены заданной строки на @»» (пустая строка).