Swift/iOS开发:如何对汽配字符串数组按品类汇总各配件价格总和
Swift 汽车配件价格分组求和实现方案
实现逻辑分为三步:拆分原始字符串、分组累计价格、转换为目标格式字符串数组,完整可运行代码如下:
let parts = [ "Wheel = 230$", "Door = 200$", "Wheel = 300$", "Seat = 150$", "Seat = 150$", "Rugs = 100$" ] var priceCache = [String: Int]() // 如需保持配件首次出现的顺序,新增顺序数组记录 var partOrder = [String]() for item in parts { // 拆分配件名和价格片段 let itemSegments = item.components(separatedBy: " = ") // 容错处理:格式不符合的元素直接跳过 guard itemSegments.count == 2, let priceText = itemSegments.last?.replacingOccurrences(of: "$", with: ""), let price = Int(priceText) else { continue } let partName = itemSegments[0] // 如需统一配件名大小写(匹配示例中的小写wheel),可修改为 let partName = itemSegments[0].lowercased() if priceCache[partName] == nil { partOrder.append(partName) } priceCache[partName, default: 0] += price } // 生成最终结果数组 let result = partOrder.map { "\($0) \(priceCache[$0]!)$" } // 输出验证:["Wheel 530$", "Door 200$", "Seat 300$", "Rugs 100$"] print(result)
如果不需要保持结果顺序,直接遍历字典生成结果即可,省去维护partOrder的步骤。
内容的提问来源于stack exchange,提问作者Asbjorn Rasen
相关产品推荐
相关产品推荐

