[Swift] 取得字元 (Character) 的下一個或前一個字元

Swift 的基本型態有一個 Character,就相等於 C++ 中的 char,而我們知道字元是有順序的,比如說大寫的 “A” 之下一個字元就是 “B”,那我們如何取得特定字元的下一個字元或前一個字元呢?

swift 1

答案是很簡單的,我們先看一下下面的擴充,這個也是透過 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"

字元對照表可以參考「維基百科」的說明。

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments