swift - 在 Swift 中构建 Unicode 标量字符串
问题描述
如何使用编码制作“\u{3A9}”字符串?这是我尝试过的,但没有奏效!
let omegaHexadecimal: String = "3A9"
let omega = "\u{" + omegaHexadecimal + "}"
或者:
let omegaHexadecimal: String = "3A9"
let omega = "\u{\(omegaHexadecimal)}"
更新:
extension StringProtocol where Self: RangeReplaceableCollection {
private var decodingUnicodeCharacters: String { applyingTransform(.init("Hex-Any"), reverse: false) ?? "" }
func stringToUniCodeHexConvertor(upTo lenght: Int = 4, using character: Character = "0") -> String {
return ("\\u" + repeatElement(character, count: Swift.max(0,lenght-count)) + self).decodingUnicodeCharacters
}
}
let omegaHexadecimal: String = "3A9"
let omega = omegaHexadecimal.stringToUniCodeHexConvertor()
print(omega) // "Ω"
解决方案
您可以将字符串最多填充 4 个十六进制数字(2 个字节 UInt16),添加\u
前缀\uXXXX
并使用字符串转换将您的 unicode 十六进制值转换为相应的字符:
extension StringProtocol where Self: RangeReplaceableCollection {
func paddingToLeft(upTo lenght: Int = 4, using character: Character = "0") -> Self {
repeatElement(character, count: Swift.max(0,lenght-count)) + self
}
var decodingUnicodeCharacters: String { applyingTransform(.init("Hex-Any"), reverse: false) ?? "" }
}
let omegaHexadecimal: String = "3A9"
let omega = "\\u" + omegaHexadecimal.paddingToLeft() // "\\u03A9"
omega.decodingUnicodeCharacters // "Ω"
推荐阅读
- delphi - 在 delphide 中使用动态字节数组时出现错误
- ios - 用于 Swift 初始化 iZettles 库的 Objective C 等效代码
- wordpress - 如何创建过滤器以显示自定义帖子类型
- avfoundation - AVAssetExportSession 通过 EXC_BAD_INSTRUCTION
- javascript - 捕获错误未通过 nightwatchjs 测试
- octave - 如何正确计算非线性函数并在 Octave 中绘制其图形?
- java - 为什么 Eclipse Ide 和 Tool Suite 不会编译/运行我的类,只是主类或前一个类
- flutter - 如何在 pubspec.yaml 中添加用户定义的变量以进行颤振?
- reactjs - 反应本机异步存储无法正常工作
- nginx - Nginx 使用 proxy_pass 忽略 access_by_lua_file