簡體   English   中英

Swift.如何獲取前一個字符?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM