尝试格式化不是字符串的字符串

时间:2013-01-08 06:34:57

标签: objective-c facebook nsstring

我在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 length]中的字符数时,它给我一个比我实际计算的字符数更大的值。我真的不明白这里发生了什么,也不知道如何解决它。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

在分支下划线后,尝试

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

我怀疑回复中有空白区域。