查找在文本字段中输入的特殊字符并在 swift 中转义

Find special characters entered in a textfield and escape in swift

我的要求是根据 UITextField 中输入的文本创建 JSONUITextField没有限制。因此,如果用户输入特殊字符("、\ 等),我想转义输入的值并创建一个 JSON.

String literals can include the following special characters:

  • The escaped special characters [=17=] (null character), \ (backslash), \t (horizontal tab), \n (line feed), \r (carriage return), \" (double quote) and \' (single quote)
  • An arbitrary Unicode scalar, written as \u{n}, where n is a 1–8 digit hexadecimal number with a value equal to a valid Unicode code point

例如,如果用户输入 "Hello "User"! How to use a \ in a JSON?"。它应该 return 像这样 "Hello \"User\"! How to use a \ in a JSON?"。不只是 " 或 \,我想转义所有特殊字符。

谢谢!非常感谢您为我提供解决方案所做的努力。

编辑 我忘了说,这个要求是针对 Swift 4.2 的。

不要“手动”转义字符以创建 JSON。有专门的 JSONEncoder() class 用于此目的。

Top-level JSON对象只能是数组或字典。以下是包含具有给定字符串的单个元素的数组的示例:

let text = """
    Hello "User"! How to use a \ in a JSON?
    Another line line
    """

do {
    let jsonData = try JSONEncoder().encode([text])
    let jsonString = String(data: jsonData, encoding: .utf8)!
    print(jsonString)
} catch {
    print(error.localizedDescription)
}

输出为

["Hello \"User\"! How to use a \ in a JSON?\nAnother line"]