NSString *infix = @"4+23-54/543*23";
NSCharacterSet *operatorSet = [NSCharacterSet characterSetWithCharactersInString:@"+-*/"];
NSArray *tokens = [infix componentsSeparatedByCharactersInSet:operatorSet];
tokens
возвращается:NSString: componentsSeparatedByCharactersInSet включительно
[@ "4", @ "23", @ "54", @ "543", @ "23"]
Я пытаюсь реализовать Shunting Yard в Objective-C. Как я могу токенизировать строку infix с набором операторов, не удаляя оператор, установленный сам из токенизации?
Что мне нужно:
[@ "4", @ "+", @ "23", @ "-", @ "54", @ "/", @ "543", @ "*", @ "23"]
Я думаю, 'componentsSeparatedByCharactersInSet:' это просто неправильный инструмент для этого. Посмотрите на NSScanner. – vikingosegundo
Да, странно, что функция, которую вы желаете, отсутствует в функциях NSString. –
NSCharacterSet имеет 'inverseSet'. Таким образом, вы можете отделить обратное ... но вы, вероятно, потеряете необходимый порядок. – stevesliva