如何从 Swift 中的字符串中删除不可见字符?

CMA*_*CMA -2 ios swift swift4

我需要从字符串中过滤不可见的字符。在附加的屏幕截图中,字符串“?Cilantro”有一些隐藏字符,当我在删除隐藏字符之前和之后计算它时,它会显示不同的字符数。

我只想过滤不可见字符而不是特殊字符,例如我不想过滤 á、ã è 等字符。

注意:我使用“删除”按钮删除了隐藏字符。

作为参考,我在这里添加了带有隐形字符的字符串:“?Cilantro”。我不确定它是否也会显示在你的最后。

在此处输入图片说明

Leo*_*bus 5

编辑/更新:Swift 5 或更高版本

您可以使用新的 Character isLetter属性

let del = Character(UnicodeScalar(127)!)
let string = "Cilantro\(del)\(del)"
print(string.count) // "10\n"
let filtered = string.filter { $0.isLetter }
print(filtered.count)  // "8\n"
Run Code Online (Sandbox Code Playgroud)
let string = "cafe\u{301}"
let filtered = string.filter { $0.isLetter }
print(filtered)  // "café"
Run Code Online (Sandbox Code Playgroud)

  • 从 Swift 5 开始,您可以简单地执行 `string.filter { $0.isASCII }` (3认同)
  • 它是 https://github.com/apple/swift-evolution/blob/master/proposals/0221-character-properties.md 的一部分。 (2认同)