[英]Swift. How to get the previous character?
例如:我有字符“b”,我要得到“a”,所以“a”是前一個字符。
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("😅")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.