如何处理用户输入字符串,该字符串在粘贴到Xcode时会出现“在源文件中找到不可打印的ascii字符”错误?

时间:2015-04-14 13:34:49

标签: ios xcode swift ascii

我正在开发一款应用,可让用户粘贴文字,然后应用处理该文字。

使用某个文本字符串,我收到“在源文件中找到的不可打印的ascii字符”错误。不可打印的角色似乎是一个标签,但我不确定。无论如何,当我尝试处理文本时它会引起问题。

当我第一次将字符串保存在变量中时,如何过滤掉这个或其他不可打印的字符?

或者还有其他方法可以解决这个问题吗?

2 个答案:

答案 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屏幕截图。

enter image description here