使用DDMathStringTokenizer
,而2 + 4
之类的内容可以精确地标记为3个令牌(第二个是+运算符,第一个和第三个是数字),如果我通过+
单独,无法将其作为令牌返回。
对于我尝试的其他所有运营商而言,情况并非如此,例如/
*
-
等。
我可能会以某种方式强迫这一点,但我如何让DDMathStringTokenizer
正确标记+
?
要重现此问题:
以下将返回没有对象的数组。如果将string
值更改为另一个运算符字符,它将返回一个有效的数组。
NSError *error = nil;
NSString *string = @"+";
DDMathOperatorSet *opSet = [DDMathOperatorSet defaultOperatorSet];
DDMathStringTokenizer *tokenizer = [[DDMathStringTokenizer alloc] initWithString:string operatorSet:opSet error:&error];
NSLog(@"Tokens:%@", [tokenizer allObjects]);
答案 0 :(得分:0)
这是令牌人试图太聪明。由于+
字符是第一个标记,因此它被假定为一元运算符(没有左侧)。然后它被丢弃在地板上,因为一元+
是一个毫无价值的操作符:它不会影响评估,因此它会从令牌流中省略。
我相信这在1.1分支上更好,但我没有时间完成将更改整合到主分区。