【问题标题】:iOS - How to insert a character in a specific place inside a string?iOS - 如何在字符串内的特定位置插入字符?
【发布时间】:2026-01-18 06:15:02
【问题描述】:

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

我该怎么做?

感谢您阅读我的帖子:)

【问题讨论】:

    标签: iphone objective-c ios nsstring


    【解决方案1】:

    这个呢:

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

    不过,您应该确保 [mu length] 始终 >= 4。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        试试这个:

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

        未经测试。

        【讨论】:

        • 所以每次我都要计算字符串的长度。但是我很确定在过去我见过一种方法可以从字符串末尾开始计数字符..
        • @user1511244 最好按照上面显示的 Alladinian 的方式在扩展之前填充它。当您使用 tiff 时,- 3 将失败,例如
        【解决方案4】:

        将“.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];
        

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            最近更新 更多