1

我有一个看起来像这样的网址:“ http://www.thisIsMyLink.com/afAFFgsfFGsgsdfgds.jpg

问题是我需要在“.jpg”之前的 url 末尾添加“_s”。所以我需要的是:http ://www.thisIsMyLink.com/afAFFgsfFGsgsdfgds_s.jpg

我找到了一种将特定字符放入字符串中的方法,如下所示:

NSMutableString *mu = [NSMutableString stringWithString:myUrl];
[mu insertString:@"_s" atIndex:5];

这将在字符串内的第 5 个字符中添加“_s”。问题是由于“.jpg”之前的标识符,我每次都不知道链接的长度,所以我需要始终将“_s”4个字符放在末尾,以便它出现就在“.jpg”之前。

我怎样才能做到这一点?

感谢您阅读我的帖子:)

4

5 回答 5

4

那这个呢:

NSMutableString *mu = [NSMutableString stringWithString:myUrl];
[mu insertString:@"_s" atIndex:[mu length] - 4];

但是,您应该确保它[mu length]始终 >= 4。

可能有聪明的方法可以做到这一点,但您没有指定如何获取原始网址。一种选择是使用stringWithFormat模块化构建字符串。

于 2012-07-26T11:46:06.757 回答
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];

所以这里的逻辑是:

  1. 获取路径的扩展名
  2. 删除扩展
  3. 添加你的字符串
  4. 添加扩展名

这样你就可以避免依赖任何假设(比如你总是有一个 3 个字母的扩展名)。最坏的情况,根本没有扩展名,并以一个路径结尾,并在其末尾附加您的字符串。我希望这会有所帮助。

于 2012-07-26T11:49:55.573 回答
1

试试这个:

[mu insertString:@"_s" atIndex:[mu length] - 3];

未经测试。

于 2012-07-26T11:46:04.500 回答
1

将“.jpg”的最后一个实例替换为“_s.jpg”,不区分大小写。如果由于某种原因在 url 的其他地方有“.jpg”,这可以避免 url 损坏。

NSString *extension = @".jpg";
NSMutableString *mu = [NSMutableString stringWithString:myUrl];
[mu insertString@"_s" atIndex[[[url lowercaseString] rangeOfString:extension options:NSBackwardsSearch].location];
于 2012-07-26T11:59:20.333 回答
0

NSString有一个方法被调用length,它返回字符串的长度。减去扩展名 (4) 的长度,您就有了起始索引。

于 2012-07-26T11:46:33.200 回答