NSString:componentsSeparatedByCharactersInSet inclusive


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:@" "];

相关内容

  • 没有找到相关文章