Как работать с строкой ввода пользователя, которая при ошибке вставки в Xcode дает ошибку "unprintable ascii character found in source file"?

Я работаю над приложением, которое позволяет пользователю вставлять текст, а затем приложение обрабатывает этот текст.

С определенной текстовой строкой я получаю сообщение об ошибке "unprintable ascii character found in source file". Непечатаемый символ выглядит как вкладка, но я не уверен. В любом случае, это вызывает проблемы при попытке обработать текст.

Как отфильтровать те или иные непечатаемые символы, когда я сначала сохраняю строку в переменной?

Или есть ли другой способ справиться с этим?

Ответы

Ответ 1

Вот еще один способ сделать это.

Эта версия также позволяет создавать новые строковые символы.

func convertString(string: String) -> String {
  var data = string.dataUsingEncoding(NSASCIIStringEncoding, allowLossyConversion: true)
  return NSString(data: data!, encoding: NSASCIIStringEncoding) as! String
}

Ответ 2

Если вас интересует только сохранение печатных символов ASCII, этот код должен работать.

extension String {
    func printableAscii() -> String {
        return String(bytes: filter(self.utf8){$0 >= 32}, encoding: NSUTF8StringEncoding) ?? ""
    }
}

Обратите внимание, что это также будет фильтровать вкладки и линейные каналы, которые могут не ожидаться. Непечатаемые ASCII - любые значения, меньшие 0x20. Вот захват экрана игровой площадки.

enter image description here