Objective c NSString:组件由字符分隔(包含在内)
代币返回: [@4,23,54,543,23] 我试图在Objective-C中实现调车场。如何使用运算符集标记中缀字符串,而不将运算符集本身从标记化中移除 我需要的是: [4、@+、@23、@-、@54、@/、@543、@*、@23]Objective c NSString:组件由字符分隔(包含在内),objective-c,tokenize,shunting-yard,nscharacterset,Objective C,Tokenize,Shunting Yard,Nscharacterset,代币返回: [@4,23,54,543,23] 我试图在Objective-C中实现调车场。如何使用运算符集标记中缀字符串,而不将运算符集本身从标记化中移除 我需要的是: [4、@+、@23、@-、@54、@/、@543、@*、@23] 如果希望使用正则表达式,可以在运算符前后插入空格,然后按空格分割字符串 我猜,按字符分隔的组件set:是一个错误的工具。请看一看NSScanner。是的,奇怪的是,NSString函数中似乎没有您想要的函数。NSCharacterSet具有inverseSet,
如果希望使用正则表达式,可以在运算符前后插入空格,然后按空格分割字符串
我猜,按字符分隔的组件set:是一个错误的工具。请看一看NSScanner。是的,奇怪的是,NSString函数中似乎没有您想要的函数。NSCharacterSet具有inverseSet,因此您可以通过反转分隔。。。但你可能会失去必要的秩序。
NSString *infix = @"4+23-54/543*23";
NSCharacterSet *operatorSet = [NSCharacterSet characterSetWithCharactersInString:@"+-*/"];
NSArray *tokens = [infix componentsSeparatedByCharactersInSet:operatorSet];
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:@" "];