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

Swift中如何使用正则将{{}}中的变量名替换为对应值?

在Swift中用正则实现{{变量}}替换的方案

你可以通过NSRegularExpression配合字典映射来实现这个需求,核心思路是用正则匹配{{变量名}}格式的内容,再从字典中取出对应值替换掉匹配项。

实现代码示例

let pairs: [String: Int] = ["a": 10, "b": 20]
var targetStr = "I have {{a}} apples and {{b}} pears"

// 定义正则表达式:匹配{{变量名}},捕获中间的变量名部分
guard let regex = try? NSRegularExpression(pattern: "\\{\\{([^}]+)\\}\\}", options: []) else {
    fatalError("正则表达式格式错误")
}

// 执行替换操作
targetStr = regex.stringByReplacingMatches(
    in: targetStr,
    range: NSRange(targetStr.startIndex..., in: targetStr),
    withTemplate: ""
) { match, _ -> String in
    // 从捕获组中提取变量名
    guard let variableRange = Range(match.range(at: 1), in: targetStr) else {
        return ""
    }
    let variableName = String(targetStr[variableRange])
    // 从字典取值,无对应值时返回空(也可改为保留原{{变量名}}格式)
    return String(pairs[variableName] ?? "")
}

print(targetStr) // 输出:I have 10 apples and 20 pears

关键说明

  • 正则表达式\\{\\{([^}]+)\\}\\}:
    • \\{\\{转义匹配开头的两个大括号
    • ([^}]+)捕获任意非}的字符(即变量名),确保只匹配到闭合的}}前的内容
    • \\}\\}转义匹配结尾的两个大括号
  • 替换逻辑:通过闭包处理每个匹配项,提取捕获的变量名后从字典中取值,将值转为字符串作为替换结果;如果变量名不存在,可根据需求返回空或保留原格式(比如返回"{{\(variableName)}}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 12:35:06