0

我正在尝试在 iOS 应用程序中提取字符串中的值。我有一个格式为 NSString:

地点:32 3203 292 293 321

我想将所有五个整数存储到 5 个不同的 int 变量中。整数具有不同的长度。我目前正在尝试确定使用空格字符作为指导的整数,但我遇到了问题。必须有一个更简单的方法来做到这一点。

这是我所拥有的:

int length = [locationString length];
    NSMutableString * xStr, * yStr,* zStr, *tiltStr, *panStr;

    int charIndex = -1;
    unichar cur;

    for(i = 3; i < length; i++)
    {
        cur = [locationString characterAtIndex:i];
        if(cur == ' ') charIndex++;
        else
        {
            if(charIndex == 0)
            {
                [xStr appendString:[NSString stringWithCharacters:&cur length:1]];
            }
            else if(charIndex == 1)
            {
                [yStr appendString:[NSString stringWithCharacters:&cur length:1]];
            }
            else if(charIndex == 2)
            {
                [zStr appendString:[NSString stringWithCharacters:&cur length:1]];
            }
            else if(charIndex == 3)
            {
                [tiltStr appendString:[NSString stringWithCharacters:&cur length:1]];
            }
            else if(charIndex == 4)
            {
                [panStr appendString:[NSString stringWithCharacters:&cur length:1]];
            }
        }
    }

    NSLog(@"x String: %@", xStr);
    NSLog(@"y String: %@", yStr);
    NSLog(@"z String: %@", zStr);
    NSLog(@"tilt String: %@", tiltStr);
    NSLog(@"pan String: %@", panStr);

    if(xStr != NULL) xVal = [xStr integerValue];
    if(yStr != NULL) yVal = [yStr integerValue];
    if(zStr != NULL) zVal = [zStr integerValue];
    if(tiltStr != NULL) tiltVal = [tiltStr integerValue];
    if(panStr != NULL) panVal = [panStr integerValue];

但我每次都得到空字符串。其他人以前做过这样的事情吗?

谢谢

4

2 回答 2

1

我认为您应该考虑使用 NSString componentsSeparatedByString API 让您的生活更轻松。你会得到一个字符串的 NSArray ,[locationString componentsSeparatedByString:@" "]你的整数将在 1-5之间

于 2012-12-04T00:19:19.587 回答
0

我会从

[locationString componentsSeparatedByString:@" "];

这将为您提供一个包含每个字符串组件的数组。

然后您可以忽略索引 0,它包含 @"loc:",其余的数组索引将包含您将使用的数据。

于 2012-12-04T00:19:40.120 回答