Основное выражение регулярного выражения - PullRequest
2 голосов
/ 20 декабря 2011

Я хотел бы заменить угловые скобки и пробелы в строке. Например, @"< something >" переходит к @"something". Я сейчас пытаюсь:

NSString *s1 = @"< something >";
NSString *s2 =
[s1 stringByReplacingOccurrencesOfString:@"[<> ]"
                              withString:@""
                                 options:NSRegularExpressionSearch
                                   range:NSMakeRange(0, s1.length)];

Однако я новичок в регулярных выражениях, и @"[<> ]", похоже, не работает. Какое правильное регулярное выражение использовать для удаления угловых скобок и пробелов?

Ответы [ 2 ]

2 голосов
/ 20 декабря 2011

Обратите внимание на документацию для NSRegularExpressionSearch:

Вы можете использовать эту опцию только с методами rangeOfString: ....

Так что даже если бы у вас было правильное регулярное выражение, вы бы не смогли использовать его с этим методом.

Для описываемой вами ситуации, вероятно, будет проще использовать -stringByTrimmingCharactersInSet: с набором символов, который включает в себя '<' и ''. </p>

Обновление: Джошуа Вайнберг отмечает, что вы хотите удалить все вхождения символов '<', '>' и ''. Если это так, вам нужно обратиться к методу NSRegularExpression -stringByReplacingMatchesInString:options:range:withTemplate::

NSError *error = nil;
NSRegularExpression *re = [NSRegularExpression regularExpressionWithPattern:@"<> " options:0 error:&error];
NSString *s1 = @"< something >";
NSRange range = NSMakeRange(0, s1.length);
NSString *s2 = [re stringByReplacingMatchesInString:s1 options:0 range:range withTemplate:@""];

(Я этого не проверял, но он должен указывать вам правильное направление.)

1 голос
/ 20 декабря 2011

Вот решение, которое удаляет символы: '<', '>', ' '

NSCharacterSet*mySet = [NSCharacterSet characterSetWithCharactersInString:@"<> "];

NSString *s1 = @"< something >";

NSArray * components = [s1 componentsSeparatedByCharactersInSet:
                          mySet];
NSMutableString * formattedS1 = [NSMutableString string];
for (NSString * s in components) {
  [formattedS1 appendString:s];
}
NSLog(@"formatted string %@", formattedS1);

Вы можете добавить любые символы, которые вам понадобятся в будущем, в первую строку

...