[英]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.