1
NSString *infix = @"4+23-54/543*23";
NSCharacterSet *operatorSet = [NSCharacterSet characterSetWithCharactersInString:@"+-*/"];
NSArray *tokens = [infix componentsSeparatedByCharactersInSet:operatorSet];

tokens戻り値:

[@"4", @"23", @"54", @"543", @"23"]

Objective-C で Shunting Yard を実装しようとしています。トークン化から演算子セット自体を削除せずに、演算子セットを使用して中置文字列をトークン化するにはどうすればよいですか?

必要なもの:

[@"4", @"+", @"23", @"-", @"54", @"/", @"543", @"*", @"23"]

4

1 に答える 1

0

regEx を使用する場合は、演算子の前後にスペースを挿入してから、文字列をスペースで分割できます。

NSString *infix = @"4+23-54/543*23";
NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:@"([+,*,/,-])" options:0 error:NULL];
NSString *newString = [regexp stringByReplacingMatchesInString:infix options:0 range:NSMakeRange(0, infix.length) withTemplate:@" $1 $2"];
NSArray *tokens = [newString componentsSeparatedByString:@" "];
于 2014-09-15T09:16:12.157 に答える