我的网址看起来像这样:“http://www.thisIsMyLink.com/afAFFgsfFGsgsdfgds.jpg”
问题是我需要在“.jpg”之前的网址末尾添加“_s”。所以我需要的是:http://www.thisIsMyLink.com/afAFFgsfFGsgsdfgds_s.jpg
我找到了一种方法将特定字符放在字符串中,如下所示:
NSMutableString *mu = [NSMutableString stringWithString:myUrl];
[mu insertString:@"_s" atIndex:5];
将在字符串内的第5个字符中添加“_s”。问题是,由于标识符出现在“.jpg”之前,我不知道每次链接的长度,所以我需要的是始终在结尾之前放置“_s”4个字符,以便它出现就在“.jpg”之前。
我该怎么做?
感谢您阅读我的帖子:)
答案 0 :(得分:4)
这个怎么样:
NSMutableString *mu = [NSMutableString stringWithString:myUrl];
[mu insertString:@"_s" atIndex:[mu length] - 4];
但是,您应该确保[mu length]
始终> = 4。
可能有一些聪明的方法可以做到这一点,但是您没有指定如何从中获取原始网址。一种选择是使用stringWithFormat
模块化地构建字符串。
答案 1 :(得分:3)
这是另一个适用于任何扩展名(例如.jpeg)的内容:
NSString *test = @"www.thisIsMyLink.com/afAFFgsfFGsgsdfgds.jpg";
NSString *ext = [test pathExtension]; // This is .jpg in this case
NSString *out = [[[test stringByDeletingPathExtension] stringByAppendingString:@"_s"] stringByAppendingPathExtension:ext];
所以这里的逻辑是:
这样你就可以避免依赖任何假设(比如你总是有3个字母的扩展名)。最糟糕的情况是,根本没有扩展,并以一个带有字符串的路径结束。我希望这有所帮助。
答案 2 :(得分:1)
试试这个:
[mu insertString:@"_s" atIndex:[mu length] - 3];
未测试。
答案 3 :(得分:1)
使用“_s.jpg”替换最后一个“.jpg”实例不区分大小写。由于某种原因,如果你在网址的其他地方有“.jpg”,这可以避免网址损坏。
NSString *extension = @".jpg";
NSMutableString *mu = [NSMutableString stringWithString:myUrl];
[mu insertString@"_s" atIndex[[[url lowercaseString] rangeOfString:extension options:NSBackwardsSearch].location];
答案 4 :(得分:0)
NSString
有一个名为length
的方法,它返回字符串的长度。减去扩展名的长度(4),你就有了起始索引。