如何在Swift中创建一个Javascript安全字符串?

How can you create a Javascript safe string in Swift?

本文关键字:一个 Javascript 安全 字符串 Swift 创建      更新时间:2023-09-26

当评估Javascript时,例如:

self.evaluateJavaScript("window.messenger.sendMessage(''(message)');

我如何确保消息是字符串类型,我可以安全地传递到这个方法?我可以想象一个引号或者换行符已经把事情搞砸了

extension String {
    var javaScriptString: String {
        var safeString  = self as NSString
        safeString      = safeString.stringByReplacingOccurrencesOfString("''", withString: "''''")
        safeString      = safeString.stringByReplacingOccurrencesOfString("'"", withString: "'''"")
        safeString      = safeString.stringByReplacingOccurrencesOfString("''", withString: "''''")
        safeString      = safeString.stringByReplacingOccurrencesOfString("'n", withString: "''n")
        safeString      = safeString.stringByReplacingOccurrencesOfString("'r", withString: "''r")
        safeString      = safeString.stringByReplacingOccurrencesOfString("'t", withString: "''t")
        safeString      = safeString.stringByReplacingOccurrencesOfString("'u{0085}", withString: "''u{0085}")
        safeString      = safeString.stringByReplacingOccurrencesOfString("'u{2028}", withString: "''u{2028}")
        safeString      = safeString.stringByReplacingOccurrencesOfString("'u{2029}", withString: "''u{2029}")
        return safeString as String
    }
}

简单地使用stringByReplacingOccurrencesOfString()来替换引号,同时为了方便创建一个扩展名:

extension String {
    var stringWithoutQuote: String {
        return self.stringByReplacingOccurrencesOfString("'", withString: "").stringByReplacingOccurrencesOfString("'"", withString: "")
    }
}
self.evaluateJavaScript("window.messenger.sendMessage(''(message.stringWithoutQuote)');