Найти специальные символы, введенные в текстовое поле и бежать в быстром - PullRequest
0 голосов
/ 10 мая 2019

Мое требование - создать JSON из текста, введенного в UITextField.Нет никаких ограничений на UITextField.Таким образом, если пользователь вводит специальный символ (", \ etc.), я хочу экранировать введенное значение и создать JSON.

. Строковые литералы могут включать следующие специальные символы:

  • Экранированные специальные символы \ 0 (нулевой символ), \ (обратный слэш), \ t (горизонтальная табуляция), \ n (перевод строки), \ r (возврат каретки), \ "(двойная кавычка)) и \ '(одинарная кавычка)
  • Произвольный скаляр Unicode, записываемый как \ u {n}, где n - шестнадцатеричное число от 1 до 8 со значением, равным действительной кодовой точке Unicode

Например, если пользователь вводит "Hello "User"! How to use a \ in a JSON?".Он должен вернуть что-то вроде этого "Hello \"User\"! How to use a \\ in a JSON?".Не просто "или \, я бы хотел убежать от всех специальных символов.

Спасибо! Я искренне ценю ваши усилия по предоставлению мне решения.

Редактировать Iзабыл упомянуть, это требование для Swift 4.2.

1 Ответ

1 голос
/ 10 мая 2019

Не «вручную» экранировать символы для создания JSON. Для этой цели существует специальный класс JSONEncoder().

Объектами верхнего уровня 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"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...