ios - data - ¿Cómo lidiar con una cadena de entrada de usuario que da un error de "carácter ASCII no imprimible encontrado en el archivo fuente" cuando se pega en Xcode?
for swift ios (2)
Estoy trabajando en una aplicación que le permite al usuario pegar texto y luego la aplicación procesa ese texto.
Con una determinada cadena de texto, aparece un error de "carácter ASCII no imprimible encontrado en el archivo fuente". El carácter no imprimible parece ser una pestaña, pero no estoy seguro. De todos modos, está causando problemas cuando intento procesar el texto.
¿Cómo puedo filtrar este u otros caracteres no imprimibles cuando primero guardo la cadena en una variable?
¿O hay otra manera de lidiar con esto?
Aquí hay otra forma de hacerlo.
Esta versión también permite nuevos caracteres de línea.
func convertString(string: String) -> String {
var data = string.dataUsingEncoding(NSASCIIStringEncoding, allowLossyConversion: true)
return NSString(data: data!, encoding: NSASCIIStringEncoding) as! String
}
Si solo está interesado en mantener caracteres ASCII imprimibles, este código debería funcionar.
extension String {
func printableAscii() -> String {
return String(bytes: filter(self.utf8){$0 >= 32}, encoding: NSUTF8StringEncoding) ?? ""
}
}
Tenga en cuenta que esto también filtrará las pestañas y los avances de línea, lo que puede no esperarse. Los ASCII no imprimibles son cualquier valor inferior a 0x20. Aquí hay una captura de pantalla de Playground.