gpt4 book ai didi

xcode - 从变量中打印 unicode 字符(swift)

转载 作者:行者123 更新时间:2023-11-30 13:06:06 25 4
gpt4 key购买 nike

我遇到了一个无法找到解决方案的问题。我有一个字符串变量保存 unicode“1f44d”,我想将其转换为 unicode 字符👍。

通常人们会做这样的事情:

println("\u{1f44d}") // 👍

这就是我的意思:

let charAsString = "1f44d" // code in variable
println("\u{\(charAsString)}") // not working

我尝试了其他几种方法,但不知何故,这个魔法背后的工作原理对我来说仍然是隐藏的。

人们应该想象 charAsString 的值来自 API 调用或来自另一个对象。

最佳答案

一种可能的解决方案(“内联”解释):

let charAsString = "1f44d"

// Convert hex string to numeric value first:
var charCode : UInt32 = 0
let scanner = NSScanner(string: charAsString)
if scanner.scanHexInt(&charCode) {

// Create string from Unicode code point:
let str = String(UnicodeScalar(charCode))
println(str) // 👍
} else {
println("invalid input")
}

使用Swift 2 稍微简单一些:

let charAsString = "1f44d"

// Convert hex string to numeric value first:
if let charCode = UInt32(charAsString, radix: 16) {
// Create string from Unicode code point:
let str = String(UnicodeScalar(charCode))
print(str) // 👍
} else {
print("invalid input")
}

另请注意,并非所有代码点都是有效的 Unicode 标量,比较Validate Unicode code point in Swift .

<小时/>

Swift 3 更新:

public init?(_ v: UInt32)

现在是 UnicodeScalar 的一个可失败的初始化程序,并检查是否给定的数字输入是有效的 Unicode 标量值:

let charAsString = "1f44d"

// Convert hex string to numeric value first:
if let charCode = UInt32(charAsString, radix: 16),
let unicode = UnicodeScalar(charCode) {
// Create string from Unicode code point:
let str = String(unicode)
print(str) // 👍
} else {
print("invalid input")
}

关于xcode - 从变量中打印 unicode 字符(swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39348053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com