2016-09-14 2 views
3

У меня есть строка, которая содержит символы, и мне нужно найти кратчайшую строку или удалить последовательность символов из этой строки.Как удалить последовательность символов из NSString

Eg: NSString *string = @"FIRSTEXAMPLEEXAMPLETEST"; 
Output: FIRSTEXAMPLETEST 

Можете ли вы помочь мне в поиске подходящего Regex format для ее достижения. Заранее спасибо.

ответ

1

Вы можете использовать (.+)\1+ regex, которые будут соответствовать самым длинным подрядным подстрокам и заменять их единственными вхождениями, используя 1-й обратный адрес $1.

Использование

NSError *error = nil; 
NSString *string = @"FIRSTEXAMPLEEXAMPLETEST"; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(.+)\\1+" options:nil error:&error]; 
NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@"$1"]; 
NSLog(@"%@", modifiedString); // => FIRSTEXAMPLETEST 

Посмотреть детали Objective-C demo

Pattern:

  • (.+) - Группа 1 захватывая один или несколько отличных перевода строки символов (использовать (?s) флаг перед позволить соответствие новой строки с точкой)
  • \1+ - одно или несколько вхождений одинаковых подстрок, зафиксированных в первой группе.
+1

Большое спасибо. Я пропустил использовать $ 1, который держит 1-й референт. –

Смежные вопросы