Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSString:组件由字符分隔(包含在内)_Objective C_Tokenize_Shunting Yard_Nscharacterset - Fatal编程技术网

Objective c NSString:组件由字符分隔(包含在内)

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,

代币返回:

[@4,23,54,543,23]

我试图在Objective-C中实现调车场。如何使用运算符集标记中缀字符串,而不将运算符集本身从标记化中移除

我需要的是:

[4、@+、@23、@-、@54、@/、@543、@*、@23]


如果希望使用正则表达式,可以在运算符前后插入空格,然后按空格分割字符串


我猜,按字符分隔的组件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:@" "];