簡體   English   中英

迅速如何轉換特殊的unicode

[英]swift how to convert special unicode

let result = ["response": response,
              "callbackId": callbackId]

do {
    let data = try NSJSONSerialization.dataWithJSONObject(result, options: .PrettyPrinted)
    var str = NSString(data: data, encoding: NSUTF8StringEncoding) as? String

    str = str?.stringByReplacingOccurrencesOfString("\\", withString: "\\\\")
    str = str?.stringByReplacingOccurrencesOfString("\"", withString: "\\\"")
    str = str?.stringByReplacingOccurrencesOfString("\'", withString: "\\\'")
    str = str?.stringByReplacingOccurrencesOfString("\n", withString: "\\n")
    str = str?.stringByReplacingOccurrencesOfString("\r", withString: "\\r")
    //                            str = str?.stringByReplacingOccurrencesOfString("\f", withString: "\\f")
    //                            str = str?.stringByReplacingOccurrencesOfString("\u2028", withString: "\\u2028")
    //            str = str?.stringByReplacingOccurrencesOfString("\u2029", withString: "\\u2029")

    return "bridge.invokeJs('{\"response\" : {\"username\" : \"zhongan\"},\"callbackId\" : \(callbackId)}')"
} catch {
    return nil
}

我想JSON字符串轉換成js腳本,然后調用evaluateJavaScript ,但不能轉換的特殊字符,如\\f \
 ,這會給出一個編譯器錯誤,我不知道為什么。

請看一下字符串文字中的字符串和字符部分的特殊字符

根據此頁面,未定義\\f

  • 轉義的特殊字符\\ 0(空字符),\\(反斜杠),\\ t(水平制表符),\\ n(換行符),\\ r(回車),\\“(雙引號)和\\'(單引號)

  • 任意Unicode標量,寫為\\ u {n},其中n是1–8位數的十六進制數字,其值等於有效的Unicode代碼點

所以

  • \\f \\u{000C}可能會以\\u{000C}形式轉義
  • \
必須將頁面Feed轉義為\\u{2029}
  • \
行分隔符必須轉為\\u{2028}

另請參閱“ Unicode控制字符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM