我正在开发一款应用,可让用户粘贴文字,然后应用处理该文字。
使用某个文本字符串,我收到“在源文件中找到的不可打印的ascii字符”错误。不可打印的角色似乎是一个标签,但我不确定。无论如何,当我尝试处理文本时它会引起问题。
当我第一次将字符串保存在变量中时,如何过滤掉这个或其他不可打印的字符?
或者还有其他方法可以解决这个问题吗?
答案 0 :(得分:5)
这是另一种方法。
此版本还允许使用换行符。
func convertString(string: String) -> String {
var data = string.dataUsingEncoding(NSASCIIStringEncoding, allowLossyConversion: true)
return NSString(data: data!, encoding: NSASCIIStringEncoding) as! String
}
答案 1 :(得分:3)
如果您只对保留可打印的ASCII字符感兴趣,那么此代码应该有效。
extension String {
func printableAscii() -> String {
return String(bytes: filter(self.utf8){$0 >= 32}, encoding: NSUTF8StringEncoding) ?? ""
}
}
请注意,这也会过滤标签和换行符,这可能是不期望的。不可打印的ASCII是小于0x20的任何值。这是一个Playground屏幕截图。