【问题标题】:Objective-C put string at location of another stringObjective-C 将字符串放在另一个字符串的位置
【发布时间】:2013-11-20 18:23:34
【问题描述】:

我不想“知道”如何将一个字符串放在另一个字符串中的某个位置。我已经知道了,因为我想出了另一种方法来做到这一点。但我想知道真正的方式,它是否存在?

我也在问这个问题,以了解关于如何将此字符串放在另一个字符串中的某个位置“错误”方式的未来问题(以防它不能以真正的方式完成)

我的意思是将(子)字符串放在字符串的位置,例如放置

这个字符串:@"Hello" at location:5 inString:@"123456789"

我希望结果是:@"12345Hello6789" 这可以真正做到吗?类似这样的假代码:

[str stringByPuttingString:@"s" atLocation:5];//this code does not exist

我想出了其他方法来完成这项工作,我们可以把它写成更短的代码吗?

-(NSString *)putString:(NSString *)str atLocation:(int)location ofString:(NSString *)mainString {
    NSRange range = NSMakeRange(location, 0);
    return [mainString stringByReplacingCharactersInRange:range withString:str];
}

-(NSString *)putString:(NSString *)str atLocation:(int)location ofString:(NSString *)mainString {
    NSString *first = [mainString substringToIndex:location];
NSString *last = [mainString substringFromIndex:location];
return [NSString stringWithFormat:@"%@%@%@", first, str, last];
}

第一个感觉最好,还有其他想法或真实想法吗?

乔纳森, 在这个“问题”的未来案例中。

【问题讨论】:

  • NSMutableString

标签: objective-c string nsstring substring


【解决方案1】:

为什么不直接使用NSMutableString

NSMutableString *string = [NSMutableString stringWithString:@"123456789"];

[string insertString:@"Hello" atIndex:5];

NSLog(@"%@", string);

输出:

12345Hello6789

【讨论】:

  • 为什么要从 C 字符串创建可变字符串?你可以做string = [NSMutableString stringWithString:@"123456789"]` 或string = [@"123456789" mutableString]
  • 你说得对,我已经习惯了看到stringWithString 告诉我它是多余的,我忘了在这种情况下使用它。编辑了答案以反映您的评论。
【解决方案2】:

你可以使用 NSMutableString 来完成这个任务。具体来说,请参阅对 insertString:atIndex: 方法的引用,该方法将完全按照您的要求进行操作,即将一个字符串插入到指定位置的另一个字符串中。 API LINK

【讨论】:

    【解决方案3】:

    您可以通过使用 NSMutableString 方法 insertString:atIndex:

    来实现这一点

    在给定位置将给定字符串的字符插入接收器。

    - (void)insertString:(NSString *)aString atIndex:(NSUInteger)anIndex
    

    参数

    字符串 要插入接收器的字符串。 aString 不能为 nil。

    索引 aString 插入的位置。位置不得超出接收者的范围。

    取自apple developer classes ref

    【讨论】:

      猜你喜欢
      • 2018-03-17
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      • 2013-03-04
      • 2020-04-22
      • 2011-01-23
      相关资源
      最近更新 更多