You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Objective-C中为数组元素拼接前后缀字符串?

刚接触Objective-C的时候确实会因为字符串拼接的方式和Android不一样有点懵,我来给你几个简单直接的方法解决数组元素加前缀/后缀的问题,刚好适合你在TableViewCell里用~

方法1:遍历数组逐个拼接(最直观易理解)

这是最适合新手上手的方式,遍历原数组的每个元素,把前缀、元素本身、后缀拼接成新字符串,再存入新数组:

// 假设原数组是存放NSString类型的元素
NSArray *originalArray = @[@"苹果", @"香蕉", @"橙子"];
NSString *prefix = @"水果:";
NSString *suffix = @"(新鲜采摘)";

NSMutableArray *resultArray = [NSMutableArray array];
for (NSString *item in originalArray) {
    // 用stringWithFormat:做格式化拼接,%@是OC中字符串的占位符
    NSString *newItem = [NSString stringWithFormat:@"%@%@%@", prefix, item, suffix];
    [resultArray addObject:newItem];
}
// 此时resultArray的元素为:@"水果:苹果(新鲜采摘)", @"水果:香蕉(新鲜采摘)", @"水果:橙子(新鲜采摘)"

小贴士:stringWithFormat:就类似Android里的String.format(),你可以灵活调整占位符的位置,比如只加前缀或者只加后缀都可以。

方法2:用Block遍历数组(更贴合OC风格)

如果你想尝试更“Objective-C”的写法,可以用数组的enumerateObjectsUsingBlock:方法,代码更紧凑,还能方便获取元素索引:

NSArray *originalArray = @[@"1", @"2", @"3"];
NSString *prefix = @"编号-";
NSMutableArray *resultArray = [NSMutableArray arrayWithCapacity:originalArray.count];

[originalArray enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    // 这里演示只加前缀,加后缀同理
    NSString *newStr = [NSString stringWithFormat:@"%@%@", prefix, obj];
    [resultArray addObject:newStr];
}];

如果需要给不同位置的元素加不同前缀/后缀,这个方法里的idx(索引)就能派上用场啦。

方法3:用KVC一行代码搞定(简洁高效)

如果追求代码简洁,可以利用OC的Key-Value Coding特性,一行代码生成目标数组:

NSArray *originalArray = @[@"张三", @"李四", @"王五"];
NSString *prefix = @"姓名:";

// 给所有元素加前缀
NSArray *prefixedArray = [originalArray valueForKeyPath:[NSString stringWithFormat:@"stringByAppendingString:@'%@'", prefix]];

// 给所有元素加后缀
NSString *suffix = @"先生";
NSArray *suffixedArray = [originalArray valueForKeyPath:[NSString stringWithFormat:@"'%@' stringByAppendingString:self", suffix]];

// 同时加前缀和后缀
NSArray *bothArray = [originalArray valueForKeyPath:[NSString stringWithFormat:@"'%@' stringByAppendingString:(self stringByAppendingString:@'%@')", prefix, suffix]];

注意:这个方法要求原数组的元素必须都是NSString类型,否则会报错,刚好适合你用于TableViewCell的场景。

在TableViewCell中直接使用的小技巧

如果你不想提前生成整个新数组,也可以在cellForRowAtIndexPath:方法里按需拼接,这样还能节省内存:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellID" forIndexPath:indexPath];
    // 获取原数组元素
    NSString *originalStr = originalArray[indexPath.row];
    // 直接拼接后赋值给cell的文本
    cell.textLabel.text = [NSString stringWithFormat:@"%@%@%@", @"【前缀】", originalStr, @"【后缀】"];
    return cell;
}

这些方法都很实用,你可以根据自己的习惯和场景选择,刚学OC多写几次就熟悉啦~

内容的提问来源于stack exchange,提问作者ysnsyhn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:26:47