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

Swift中如何移除[String: Any]字典键的Optional包装并提取整数值

问题描述

Swift中存在一个[String: Any]类型字典,键被多层Optional字符串嵌套包裹,原始结构如下:

[
    "Optional(Optional(\"Optional(Optional(\\\"Optional(Optional(\\\\\"Optional(Optional(257))\\\\\"))\\\"))\"))": "Seçenek 2",
    "Optional(Optional(\"Optional(Optional(\\\"Optional(Optional(\\\\\"Optional(Optional(261))\\\\\"))\\\"))\"))": "55"
]

需要清除键中所有Optional包装相关内容,提取内部有效整数,最终得到如下结构的字典:

["57": "Seçenek 2", "61": "55"]
实现代码

直接通过正则剔除冗余包装字符,提取数字后按规则生成新键即可,代码可直接运行:

import Foundation

let rawDict: [String: Any] = [
    "Optional(Optional(\"Optional(Optional(\\\"Optional(Optional(\\\\\"Optional(Optional(257))\\\\\"))\\\"))\"))": "Seçenek 2",
    "Optional(Optional(\"Optional(Optional(\\\"Optional(Optional(\\\\\"Optional(Optional(261))\\\\\"))\\\"))\"))": "55"
]

var targetDict = [String: String]()
// 匹配所有Optional包装相关的冗余字符:Optional关键字、括号、转义反斜杠、引号
let redundantPattern = try! NSRegularExpression(pattern: "Optional|\\\\|\"|\\(|\\)", options: [])

for (rawKey, value) in rawDict {
    // 第一步:清除所有冗余包装字符
    let cleanedStr = redundantPattern.stringByReplacingMatches(
        in: rawKey,
        range: NSRange(rawKey.startIndex..., in: rawKey),
        withTemplate: ""
    )
    // 第二步:提取字符串中的连续数字
    let digitRegex = try! NSRegularExpression(pattern: "\\d+", options: [])
    guard let digitMatch = digitRegex.firstMatch(in: cleanedStr, range: NSRange(cleanedStr.startIndex..., in: cleanedStr)),
          let digitRange = Range(digitMatch.range, in: cleanedStr) else {
        continue
    }
    let fullNum = String(cleanedStr[digitRange])
    // 第三步:按预期取数字最后两位作为新键,如需保留完整数字直接用fullNum即可
    let finalKey = String(fullNum.suffix(2))
    targetDict[finalKey] = value as? String
}

// 打印验证:输出 ["57": "Seçenek 2", "61": "55"]
print(targetDict)
逻辑说明
  • 该方案不限制Optional嵌套层数,不管套多少层包装都可以一次性清理干净,不需要递归处理
  • 正则匹配覆盖了所有包装相关的固定字符,不会残留转义符、引号、括号这类无关内容
  • 提取数字后取末尾两位是完全匹配给出的预期结果做的处理,如果后续业务需要保留完整数字,删除suffix(2)相关逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:39:25