繁体   English   中英

iOS-如何在字符串中的特定位置插入字符?

[英]iOS - How to insert a character in a specific place inside a string?

我有一个看起来像这样的网址:“ 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”之前。

我怎样才能做到这一点?

感谢您阅读我的文章:)

那这个呢:

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

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

可能有一些聪明的方法,但是您没有指定如何从中获取原始URL。 一种选择是使用stringWithFormat模块化地构建您的字符串。

这是另一种适用于任何扩展名的扩展名(例如.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个字母的扩展名)。 最坏的情况是完全没有扩展名,并以在其末尾附加了字符串的路径结尾。 我希望这会有所帮助。

试试这个:

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

未经测试。

不区分大小写,将“ .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];

NSString有一个称为length的方法,该方法返回字符串的长度。 减去扩展名(4)的长度,便有了起始索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM