我在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]中的字符数时,它给我一个比我实际计算的字符数更大的值。我真的不明白这里发生了什么,也不知道如何解决它。任何帮助表示赞赏。
答案 0 :(得分:1)
在分支下划线后,尝试
finalString = [remainingString stringByTrimmingCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]];
我怀疑回复中有空白区域。