Swift 的基本型態有一個 Character,就相等於 C++ 中的 char,而我們知道字元是有順序的,比如說大寫的 “A” 之下一個字元就是 “B”,那我們如何取得特定字元的下一個字元或前一個字元呢?
![[Swift] 取得字元 (Character) 的下一個或前一個字元 1 swift 1](https://www.inote.tw/wp-content/uploads/2020/02/swift-1-150x150.png 150w, https://www.inote.tw/wp-content/uploads/2020/02/swift-1.png 256w)
答案是很簡單的,我們先看一下下面的擴充,這個也是透過 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"
字元對照表可以參考「維基百科」的說明。