iPhone SDK inString函数

时间:2010-04-28 11:25:47

标签: iphone cocoa

我试图编写一个从URI字符串中提取ID的方法。我的下面的代码似乎效率低下,找到id字符串的更好方法是什么?

NSString *aID = [[[NSString alloc] initWithString:@"http://www.example.com/id368907840?mt=8&uo=4"] autorelease];
NSArray *arrStr = [aID componentsSeparatedByString:@"/id"];
aID = [arrStr objectAtIndex:1];
arrStr = [aID componentsSeparatedByString:@"?mt="];
aID = [arrStr objectAtIndex:0];

上面给我留下了NSString = 368907840

3 个答案:

答案 0 :(得分:3)

您可以使用NSURL -lastPathComponentNSString -stringByTrimmingCharactersInSetNSCharacterSet +letterCharacterSet来完成与以下示例相同的任务:

NSURL* url = [NSURL URLWithString:@"http://www.example.com/id368907840?mt=8&uo=4"];
NSString* lastpath = [url lastPathComponent]; // "id368907840"
NSCharacterSet* letters = [NSCharacterSet letterCharacterSet];
NSString* result = [lastpath stringByTrimmingCharactersInSet:letters]; // 368907840

免责声明:我实际上没有试过这个,所以你需要自己尝试一下,但我相信这应该有效。

答案 1 :(得分:0)

您可以使用subStringWithRange和rangeOfString的组合,

NSString *aID = [[[NSString alloc] initWithString:@"http://www.example.com/id368907840?mt=8&uo=4"] autorelease];

int startIndex = [aID rangeOfString:@"id"].location + 2;
int length = [aID rangeOfString:@"mt"].location - startIndex - 1;

aID = [aID substringWithRange:NSMakeRange(startIndex, length)];

答案 2 :(得分:0)

使用正则表达式。其中一种情况是使用它们更容易,更易读。