簡體   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