You need to enable JavaScript to run this app. Swift中如何使用通配符移除字符串(x)后缀并聚合字典键值?
优惠活动
大模型
产品
解决方案
定价
更多

Swift中如何使用通配符移除字符串(x)后缀并聚合字典键值?

Swift 移除字典键末尾(数字)后缀并聚合值的实现方案

你之前的写法不生效是因为replacingOccurrences默认执行精确字面量匹配,无法识别通配符规则。要实现该需求需要开启正则匹配模式,用正则表达式表示你需要匹配的(x)后缀格式。

核心匹配规则

你需要匹配末尾(数字)格式的正则表达式为:\\s*\\(\\d+\\)$,各部分含义:

  • \\s*:兼容匹配括号前可能存在的0个或多个空格,不需要可删除
  • \\(:匹配左括号字面量
  • \\d+:匹配1个或多个数字,也就是你要的通配符x的部分
  • \\):匹配右括号字面量
  • $:限定仅匹配字符串末尾的内容,避免误删名字中间带括号的内容

完整实现代码

// 输入示例
let inputDict: [String: Int] = ["James" : 3, "James(1)" : 3, "James(2)" : 4, "Sarah" : 10, "Sarah(1)" : 10, "Sarah(2)" : 10 ]
var outputDict: [String: Int] = [:]
for (originKey, value) in inputDict {
    // 开启正则匹配,移除末尾括号后缀
    let cleanedKey = originKey.replacingOccurrences(of: "\\s*\\(\\d+\\)$", with: "", options: .regularExpression)
    // 同键值累加
    outputDict[cleanedKey, default: 0] += value
}
print(outputDict) // 输出:["James": 10, "Sarah": 30]

扩展适配

如果括号内的内容不只是数字,可将正则中的\\d+替换为[^)]+,即可匹配右括号前的任意非右括号字符,适配更多后缀场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 07:21:03