0

我在 Xcode 4.5 中有一个应用程序。我的应用程序允许用户在他们的 Facebook 墙上发帖。每个帖子都返回一个唯一的帖子标识号,它是变量类型“id”。为了我的应用程序的目的,我需要捕获这个帖子标识号,并重新格式化它。帖子 ID 具有一般格式:“12345_678910”(引号是格式的一部分)。我需要做的是创建一个仅包含部分帖子 ID 的新字符串;特别是(从这个例子中)只是 678910 - 换句话说,在下栏之后和最后一个报价之前的所有内容。

这是奇怪的部分:当我以 NSString 的形式创建一个与实际帖子标识格式相同的假帖子 ID 时,我可以格式化该假帖子 ID 以获得我想要的。但是,当我在作为实际帖子 ID 的 'id' 类型变量上运行相同的代码时,我会得到不同的结果!请参见下面的示例:

//result is the post id of type 'id' (the console displays it as "12345_67890")

NSString *resultString = [NSString stringWithFormat:@"%@",result];
         NSArray *resultComponents = [resultString componentsSeparatedByString:@"_"];
         NSString *remainingString = [resultComponents lastObject]; //this works
         NSString *finalString = [remainingString substringToIndex:[remainingString  
            length]-1]; //this doesn't work
         [DataController dc].postIDData = finalString;
         NSLog(@"%@",[DataController dc].postIDData); //the console reads 67890"
        }

所以上面的代码产生了下栏之后的数字部分(我想要的),但仍然包含引号!如果我在 NSString 类型的假结果字符串上使用相同的代码,那么我只会得到 67890。同样奇怪的是,当我执行 NSLog 来计算“resultString”[resultString 长度]中的字符数时,它给我一个比我实际计算的字符数更大的值。我真的不明白这里发生了什么,也不知道如何解决它。任何帮助表示赞赏。

4

1 回答 1

1

在下划线拆分后,尝试

finalString = [remainingString stringByTrimmingCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]];

我怀疑响应中有尾随空格。

于 2013-01-08T06:41:59.550 回答