-->

如何NSString的intoNSArray转换?(How to convert NSString

2019-10-30 07:58发布

我有一个NSString这是一个数学表达式。 我有运营商(+,-,*,/)和操作数(digits from 0 to 9,integers,decimals etc) 。 我想这个转换NSStringNSArray 。 例如,如果我NSString是“7.9999-1.234 * -9.21”。 我想NSArray有元素7.9999, - , - 1.234,*, - ,9.21以相同的顺序。 我怎样才能做到这一点?

我已经尝试了代码。 它dosent在所有情况下的工作虽然。 这里是:

码:

NSString *str=@"7.9999-1.234*-9.21";
NSMutableArray *marray=[[NSMutableArray alloc] init];
    for(i=0;i<6;i++)
    {
        [marray addObject:[NSNull null]];
    }
    NSMutableArray *operands=[[NSMutableArray alloc] initWithObjects:@"7.9999",@"1.234",@"9.21",nil];
    NSMutableArray *operators=[[NSMutableArray alloc] initWithObjects:@"-",@"*",@"-",nil];
    for(i=0,j=0,k=0,l=0;i<=([str length]-1),j<[operands count],k<[operators count],l<[marray count];i++)
    {
        NSString *element=[[NSString alloc] initWithFormat:@"%c",[str characterAtIndex:i]];
        BOOL res=[element isEqualToString:@"+"]||[element isEqualToString:@"-"]||[element isEqualToString:@"*"]||[element isEqualToString:@"/"];
        if(res==0)
        {
            [marray replaceObjectAtIndex:l withObject:[operands objectAtIndex:j]];


        }
        else
        {
            l++;
            [marray replaceObjectAtIndex:l withObject:[operators objectAtIndex:k]];
            k++,l++,j++;

        }
    }
    for(i=0;i<6;i++)
    {
        NSLog(@"%@",[marray objectAtIndex:i]);
    }

这里str是要转换的字符串。 我的阵列是通过将字符串str得到的数组。 当我执行这个代码,我得到控制台执行以下操作:

 7.9999
 -
 1.234
 *
 <null>
 -

Answer 1:

您应该使用NSScanner ,扫描到你的运营商角色,那么当你发现一个,保存扫描的字符串,然后保存操作进入阵列和跳过运营商( setScanLocation: 继续这样做,直到你到达字符串的结尾(在一个循环中,每个操作员一个迭代)。



Answer 2:

NSArray * marray = [str componentsSeparatedByCharactersInSet:
                      [NSCharacterSet characterSetWithCharactersInString:@"+-*/"]
                    ];


Answer 3:

三江源@Wain和@Hinata Hyuga.I想通了,将努力任意字符串转换为数组与您的建议帮助一个代码。

下面是代码

NSMutableArray *convArray=[[NSMutableArray alloc] init];
    NSScanner *scanner = [NSScanner scannerWithString:inputString];
    NSCharacterSet *opSet=[NSCharacterSet characterSetWithCharactersInString:@"+-/*"];
    [scanner setCharactersToBeSkipped:opSet];
    int i;
    for(i=0;i<[inputString length];)
    {
        if([inputString characterAtIndex:i]=='+'||[inputString characterAtIndex:i]=='-'||[inputString characterAtIndex:i]=='*'||[inputString characterAtIndex:i]=='/')
        {
            [convArray addObject:[[NSString alloc] initWithFormat:@"%c",[inputString characterAtIndex:i]]];
            i++;
        }
        else
        {
            NSString *oprnd;
            [scanner scanUpToCharactersFromSet:opSet intoString:&oprnd];
            [convArray addObject:oprnd];
            i=i+[inputString rangeOfString:oprnd].length;
        }
    }
    return convArray;


文章来源: How to convert NSString intoNSArray?