tokenize - NSString:componentsSeparatedByCharactersInSet 包含

  显示原文与译文双语对照的内容
0 0
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"]

时间:原作者:4个回答

0 0

如果你想使用 正规表达式,可以在操作符前后插入空格,然后按空格分割字符串。

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:@""];
原作者:
...