【发布时间】:2013-08-12 11:13:10
【问题描述】:
我有一个NSString,这是一个数学表达式。我有运算符(+,-,*,/) 和操作数(digits from 0 to 9,integers,decimals etc)。我想将此NSString 转换为NSArray。例如,如果我的NSString 是“7.9999-1.234*-9.21”。我希望NSArray 具有相同顺序的元素 7.9999,-,1.234,*,-,9.21。我怎样才能做到这一点?
我尝试了一个代码。不过,它在所有情况下都有效。这里是:
代码:
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>
-
【问题讨论】:
-
使用 componentsSeparatedByCharactersInSet 代替。
标签: objective-c nsstring nsmutablearray