NSString *infix = @"4+23-54/543*23";
NSCharacterSet *operatorSet = [NSCharacterSet characterSetWithCharactersInString:@"+-*/"];
NSArray *tokens = [infix componentsSeparatedByCharactersInSet:operatorSet];
tokens
回报:
[@"4", @"23", @"54", @">543", @"23"]
我正在尝试在Objective-C中实现调车场。如何在不从标记化中删除运算符集本身的情况下,使用运算符集对中缀字符串进行标记化?
我需要什么:
[@"4", @"+", @"23", @"-", @"54", @"/", @">543", @"*", @"23"]
如果你想使用 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:@" "];