저는 수학적 표현 인 NSString
입니다. 나는 연산자가 (+,-,*,/)
이고 피연산자가 (digits from 0 to 9,integers,decimals etc)
입니다. 이 NSString
을 NSArray
으로 변환하고 싶습니다. 예를 들어 내 NSString
이 "7.9999-1.234 * -9.21"인 경우 나는 동일한 순서로 요소 7.9999, -, 1.234, *, -, 9.21을 갖는 NSArray
을 원한다. 이것을 어떻게 할 수 있습니까?NSString을 NSArray로 변환하는 방법?
나는 코드를 시도했다. 그것은 모든 시나리오에서 작동 dosent. 여기있다 :
코드 :
NSString *[email protected]"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을 변환하여 얻은 배열입니다. 내가 콘솔에서 다음을 얻을이 코드를 실행하면 :
7.9999
-
1.234
*
<null>
-
사용 componentsSeparatedByCharactersInSet입니다. –