Заменить вхождения строки, содержащей любое число - PullRequest
0 голосов
/ 16 ноября 2011

Скажем, у меня есть строка, которая содержит управляющий код "\ f3" (да, это RTF). Я хочу заменить этот управляющий код другой строкой. На данный момент я использую [mutableString replaceOccurrencesOfString:@"\f3" withString:@"replacement string" options:0 range:NSMakeRange(0, [mutableString length])];

Это прекрасно работает, однако иногда код может быть, например, "\ f4" или даже "\ f12". Как заменить эти строки? Я мог бы использовать replaceOccurrencesOfString для каждого, но лучший способ сделать это - использовать подстановочные знаки, так как это может быть любое число.

1 Ответ

2 голосов
/ 16 ноября 2011

Регулярные выражения сделали бы это.

Взгляните на NSRegularExpression (iOS> = 4) и на этой странице о том, как работают регулярные выражения.

Вам понадобится что-то вроде:

// Create your expression
NSError *error = nil;
NSRegularExpression *regex = 
  [NSRegularExpression regularExpressionWithPattern:@"\\b\f[0-9]*\\b"
                                            options:NSRegularExpressionCaseInsensitive
                                              error:&error];

// Replace the matches
NSString *modifiedString = [regex stringByReplacingMatchesInString:string
                                                       options:0
                                                         range:NSMakeRange(0, [string length])
                                                  withTemplate:@"replacement string"];

ВНИМАНИЕ: я не проверял свое регулярное выражение и не настолько хорош, чтобы с первого раза правильно их понять;Я просто знаю, что регулярные выражения - это путь вперед, и он должен выглядеть что-то вот так;)

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