Swift 的基本型態有一個 Character,就相等於 C++ 中的 char,而我們知道字元是有順序的,比如說大寫的 “A” 之下一個字元就是 “B”,那我們如何取得特定字元的下一個字元或前一個字元呢?
答案是很簡單的,我們先看一下下面的擴充,這個也是透過 ChatGPT 問出來的答案。
extension Character{
/// 取得「下一個 Unicode 字元」
func nextUnicodeCharacter() -> Self? {
guard let scalar = unicodeScalars.first else {
return nil
}
let nextScalar = UnicodeScalar(scalar.value + 1)
guard let nextScalar else {
return nil
}
return .init(nextScalar)
}
/// 取得「前一個 Unicode 字元」
func previousUnicodeCharacter() -> Self? {
guard let scalar = unicodeScalars.first else {
return nil
}
let previousScalar = UnicodeScalar(scalar.value - 1)
guard let previousScalar else {
return nil
}
return .init(previousScalar)
}
}
而我們要怎麼用呢?很簡單的。
var identify: Character = "B"
var nextIdentify = identify.nextUnicodeCharacter() // print "C"
var previousIdentify = identify.previousUnicodeCharacter() // print "A"
字元對照表可以參考「維基百科」的說明。