gpt4 book ai didi

swift - 字符串格式参数绑定(bind)字典

转载 作者:行者123 更新时间:2023-11-28 15:06:06 25 4
gpt4 key购买 nike

是否有任何内置解决方案允许以 NSExpression 的方式替换字符串(即提供绑定(bind)字典)?

所以代替:

let s = String(format: "%@ %@", arguments: ["foo", "bar"]) // "foo bar"

我们有:

let s = String(format: "$foo $bar", ["foo": "hello", "bar": "world"]) // hello world

附言我知道 replaceOccurrences,我需要 NSExpression 样式替换。谢谢!

最佳答案

正如 matt 已经提到的,您需要实现自己的方法。您可以使用正则表达式来匹配字典中以美元符号 "\\$\\w+" 开头的所有键的范围,并使用方法 "ranges(of:)" 这个 answer替换字符串的子范围,创建一个扩展字符串的自定义初始值设定项:

extension String {
init(format: String, _ dictionary: [String: String]) {
var result = format
for range in format.ranges(of: "\\$\\w+", options: .regularExpression).reversed() {
result.replaceSubrange(range, with: dictionary[String(format[range].dropFirst())] ?? "")
}
self = result
}
}

Playground 测试:

let result = String(format: "$foo $bar", ["foo": "hello", "bar": "world"])
print(result) // "hello world"

关于swift - 字符串格式参数绑定(bind)字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48471366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com