dav*_*eme 13 string character emoji swift
每个表情符号都有一个描述,你可以在Mac OS的??Space
特殊字符选择器中看到.这里列出了它们.有没有办法让我在代码中查询这个描述(没有将它们全部输入到Struct中)?
我想做点什么:
let : Character = ""
let desc: String = .description
Run Code Online (Sandbox Code Playgroud)
并desc
决心"SMILING FACE WITH OPEN MOUTH AND SMILING EYES"
.
Mar*_*n R 18
Core Foundation函数CFStringTransform()
具有确定特殊字符的Unicode标准名称的转换.例:
let c : Character = ""
let cfstr = NSMutableString(string: String(c)) as CFMutableString
var range = CFRangeMake(0, CFStringGetLength(cfstr))
CFStringTransform(cfstr, &range, kCFStringTransformToUnicodeName, false)
print(cfstr)
Run Code Online (Sandbox Code Playgroud)
输出:
\N{SMILING FACE WITH OPEN MOUTH AND SMILING EYES}
Run Code Online (Sandbox Code Playgroud)
有关的更多信息,
请参见http://nshipster.com/cfstringtransform/CFStringTransform()
.
Martin R 使用Core Foundation 的答案CFStringTransform()
仍然有效,但关键功能实际上来自于kCFStringTransformToUnicodeName
,在Swift 2中我们可以像这样使用它,通过桥接NSString
和调用stringByApplyingTransform
:
let c: Character = ""
if let result = (String(c) as NSString)
.stringByApplyingTransform(
String(kCFStringTransformToUnicodeName),
reverse: false) {
print(result)
}
Run Code Online (Sandbox Code Playgroud)
\ N {与开口和微笑的眼睛微笑}
字符串相同:
let s: String = "This is a "
if let result = (s as NSString)
.stringByApplyingTransform(
String(kCFStringTransformToUnicodeName),
reverse: false) {
print(result)
}
Run Code Online (Sandbox Code Playgroud)
这是一个\ N {SMING FACE WITH OPEN MOUTH AND SMILING EYES}
使用 Swift 5,您可以使用以下两种方式之一来获取 Emoji 字符的描述。
Unicode.Scalar.Properties
的name
属性Unicode.Scalar.Properties
有一个name
属性。name
有以下声明:
var name: String? { get }
Run Code Online (Sandbox Code Playgroud)
标量的已发布名称。
下面的 Playground 代码示例显示了如何使用name
以获取 Unicode 标量的已发布名称:
let emoji: Character = ""
for scalar in emoji.unicodeScalars {
print(scalar.properties.name)
}
/*
prints: Optional("SMILING FACE WITH OPEN MOUTH AND SMILING EYES")
*/
Run Code Online (Sandbox Code Playgroud)
Unicode.Scalar.Properties
的nameAlias
属性Unicode.Scalar.Properties
还有一个nameAlias
使用以下声明调用的属性:
var nameAlias: String? { get }
Run Code Online (Sandbox Code Playgroud)
标量的规范形式别名。[...]
nameAlias
如果名称被错误地发布,则提供该财产以进行更正。例如,U+FE18 的名称是“PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET”(注意“BRACKET”拼写错误)。nameAlias
然后该属性包含更正后的名称。
下面的 Playground 示例代码显示了U+FE18 Unicode 标量之间name
和之间的区别nameAlias
:
let emoji: Character = "\u{FE18}" // ?
for scalar in emoji.unicodeScalars {
print(scalar.properties.name)
}
/*
prints:
Optional("PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET")
*/
Run Code Online (Sandbox Code Playgroud)
let emoji: Character = "\u{FE18}" // ?
for scalar in emoji.unicodeScalars {
print(scalar.properties.nameAlias)
}
/*
prints:
Optional("PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET")
*/
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2894 次 |
最近记录: |