繁体   English   中英

运行时的Swift字符串插值

[英]Swift string interpolation at runtime

我正在寻找在Swift中实现一些简单的字符串模板的方法,并且想知道内置选项是什么用于在运行时用值替换字符串中的宏。

如果有一种让我在运行时使用字符串插值语法"\\(variable)"的方法,那将是非常棒的,但是我猜它们实际上是在编译时进行了解析,因为宏可以包含实际代码。

我还发现了一个String构造函数,该构造函数接受Objective-C风格的格式字符串,使用%@等。

let myString = String(format: "Hello %@", name)

尽管我不太喜欢语法,但这可能行得通。 我只是想知道是否应该采用更好的方法,或者只编写自己的方法会更好。

能够在宏内执行命令(例如运算符或方法/属性调用)非常棒,但不是必需的(考虑Swift语言的静态程度,这是不希望的)。

import Foundation

let serverName = "Fantastic"
var resultString = "We are using $SERVERNAME$"

if let range = resultString.rangeOfString("$SERVERNAME$") {
  resultString.replaceRange(range, with: serverName)
}

你可以,当然,实现一个String的扩展,如果你将要经常使用这个。

extension String {
    func replaceString(sourceString:String, withNewElements newElements:String) throws {
    //implementation left for the reader
        let userInfo = ["missingString": sourceString,
            "message": "Substring '\(sourceString)' not found in '\(self)'"]
        throw NSError(domain: "ReplaceStringFailure", code: 1, userInfo: userInfo)
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM