簡體   English   中英

在Swift中將Unicode標量表情符號轉換為String

[英]Convert unicode scalar emoji to String in Swift

我從服務器獲取的文本字符串中的表情符號獲得了unicode標量,當我在UILabel中將它們打印時,它們無法顯示為表情符號。 這是從服務器獲取字符串的格式:

let string = "Hi, I'm lily U+1F609"

除非將其更改為

let string = "Hi, I'm lily \u{1F609}"

無論如何,我可以將字符串轉換為所需的格式嗎?

我不想使用正則表達式確定U+<HEX_CODE> ,然后將其轉換為\\u{HEX_CODE} 必須有一個更好的方法來做到這一點。

這就是正則表達式創建時遇到的那種問題。 如果有一個更簡單的非正則表達式解決方案,我將刪除此答案:

func replaceWithEmoji(str: String) -> String {
    var result = str

    let regex = try! NSRegularExpression(pattern: "(U\\+([0-9A-F]+))", options: [.CaseInsensitive])
    let matches = regex.matchesInString(result, options: [], range: NSMakeRange(0, result.characters.count))

    for m in matches.reverse() {
        let range1 = m.rangeAtIndex(1)
        let range2 = m.rangeAtIndex(2)

        if let codePoint = Int(result[range2], radix: 16) {
            let emoji = String(UnicodeScalar(codePoint))
            let startIndex = result.startIndex.advancedBy(range1.location)
            let endIndex = startIndex.advancedBy(range1.length)

            result.replaceRange(startIndex..<endIndex, with: emoji)
        }
    }

    return result
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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