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