我有一些源代码来获取网址的文件名
例如:
我希望得到一个.pdf
因为我能得到的连接2个NSString的方法是'appendString',它只能在右侧添加一个字符串,所以我打算从字符串' http://www.google.com/a.pdf 的右侧开始逐个检查每个字符。 ',当到达字符'/'时,停止检查,返回字符串 fdp.a ,之后我将 fdp.a 更改为 a.pdf
源代码如下
-(NSMutableString *) getSubStringAfterH : originalString:(NSString *)s0
{
NSInteger i,l;
l=[s0 length];
NSMutableString *h=[[NSMutableString alloc] init];
NSMutableString *ttt=[[NSMutableString alloc] init ];
for(i=l-1;i>=0;i--) //check each char one by one from the right side of string 'http://www.google.com/a.pdf', when it reach at the char '/', stop
{
ttt=[s0 substringWithRange:NSMakeRange(i, 1)];
if([ttt isEqualToString:@"/"])
{
break;
}
else
{
[h appendString:ttt];
}
}
[ttt release];
NSMutableString *h1=[[[NSMutableString alloc] initWithFormat:@""] autorelease];
for (i=[h length]-1;i>=0;i--)
{
NSMutableString *t1=[[NSMutableString alloc] init ];
t1=[h substringWithRange:NSMakeRange(i, 1)];
[h1 appendString:t1];
[t1 release];
}
[h release];
return h1;
}
h1可以返回正确的字符串a.pdf,但是如果它返回到调用它的代码,一段时间后系统会报告 '双重免费 *** 在malloc_error_break中设置断点进行调试'
我检查了很长时间,发现如果我删除了代码
ttt=[s0 substringWithRange:NSMakeRange(i, 1)];
一切都会好的(当然getSubStringAfterH不能返回我期望的正确结果。),没有报错。
我尝试修复该错误几个小时,但仍然没有任何线索。
欢迎大家留言
谢谢 交互开发
最佳答案
如果 url 是 NSString,则以下行将执行此操作:
NSString *filename = [url lastPathComponent];
如果 url 是 NSURL,则执行以下操作:
NSString *filename = [[url path] lastPathComponent];
关于iphone - 获取 URL 的文件名的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2440620/