如何从 Swift 中的字符串中删除零宽度空格?
How to remove zero width spaces from string in Swift?
我需要从字符串中过滤不可见字符。在附带的屏幕截图中,字符串“Cilantro”有一些隐藏字符,当我在删除隐藏字符之前和之后计算它时,它显示不同的字符数。
我只想过滤不可见字符而不是特殊字符,例如我不想过滤 á、ã è 等字符。
注意:我使用 "delete" 按钮删除了隐藏字符。
作为参考,我在这里添加了带有不可见字符的字符串:“ Cilantro”。我不确定它是否也会显示在你这边。
Swift 5 或更高版本
你可以使用新角色isLetter 属性
let del = Character(UnicodeScalar(127)!)
let string = "Cilantro\(del)\(del)"
print(string.count) // "10\n"
let filtered = string.filter { [=10=].isLetter }
print(filtered.count) // "8\n"
let string = "cafe\u{301}"
let filtered = string.filter { [=11=].isLetter }
print(filtered) // "café"
如果您只想从字符串中删除零宽度空格,您可以执行以下操作:
extension Character {
static let zeroWidthSpace = Self(.init(0x200B)!)
var isZeroWidthSpace: Bool { self == .zeroWidthSpace }
}
extension Bool {
var negated: Bool { !self }
}
let str = "Cilantro"
print(str.count) // 9
let filtered = str.filter(\.isZeroWidthSpace.negated)
print(filtered.count) // 8
我需要从字符串中过滤不可见字符。在附带的屏幕截图中,字符串“Cilantro”有一些隐藏字符,当我在删除隐藏字符之前和之后计算它时,它显示不同的字符数。
我只想过滤不可见字符而不是特殊字符,例如我不想过滤 á、ã è 等字符。
注意:我使用 "delete" 按钮删除了隐藏字符。
作为参考,我在这里添加了带有不可见字符的字符串:“ Cilantro”。我不确定它是否也会显示在你这边。
Swift 5 或更高版本
你可以使用新角色isLetter 属性
let del = Character(UnicodeScalar(127)!)
let string = "Cilantro\(del)\(del)"
print(string.count) // "10\n"
let filtered = string.filter { [=10=].isLetter }
print(filtered.count) // "8\n"
let string = "cafe\u{301}"
let filtered = string.filter { [=11=].isLetter }
print(filtered) // "café"
如果您只想从字符串中删除零宽度空格,您可以执行以下操作:
extension Character {
static let zeroWidthSpace = Self(.init(0x200B)!)
var isZeroWidthSpace: Bool { self == .zeroWidthSpace }
}
extension Bool {
var negated: Bool { !self }
}
let str = "Cilantro"
print(str.count) // 9
let filtered = str.filter(\.isZeroWidthSpace.negated)
print(filtered.count) // 8