Как работать с строкой ввода пользователя, которая при ошибке вставки в 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]()