例如:我有字符"我想要得到什么,所以,我想要得到什么,所以,我想要得到什么。是前一个字符。
let b: Character = "b"
let a: Character = b - 1 // Compilation error
从Swift的Character
类型中获得前一个字符实际上非常复杂,因为Character
实际上由一个或多个Unicode.Scalar
值组成。根据您的需要,您可以将您的工作限制为仅使用ASCII字符。或者您可以支持由单个Unicode标量组成的所有字符。一旦你进入由多个Unicode标量组成的字符(例如旗帜表情符号或各种肤色表情符号),那么我甚至不确定"前一个字符"是什么。意思。
下面是添加到Character
扩展中的一对方法,可以处理ASCII和单一unicode标量字符。
extension Character {
var previousASCII: Character? {
if let ascii = asciiValue, ascii > 0 {
return Character(Unicode.Scalar(ascii - 1))
}
return nil
}
var previousScalar: Character? {
if unicodeScalars.count == 1 {
if let scalar = unicodeScalars.first, scalar.value > 0 {
if let prev = Unicode.Scalar(scalar.value - 1) {
return Character(prev)
}
}
}
return nil
}
}
例子:
let b: Character = "b"
let a = b.previousASCII // Gives Optional("a")
let emoji: Character = "😆"
let previous = emoji.previousScalar // Gives Optional("😅")