如何在 Swift 字符串中包含表情符号?
How to include emoticons in Swift string?
Here 是一篇很好的文章,引用了 iOS 个表情符号及其代码。例如\ue008
为小相机。
我在我的代码中试过这个:
var myText: String = "\ue008"
这不被 Xcode 接受。如何包含它?
来自 swift 文档:
let dollarSign = "\u{24}" // $, Unicode scalar U+0024
let blackHeart = "\u{2665}" // ♥, Unicode scalar U+2665
let sparklingHeart = "\u{1F496}" // , Unicode scalar U+1F496
您可以直接使用⌘ ^ Space
插入表情符号。
或者,根据 Greg 的回答:
var myText: String = "\u{e008}"
您根本不需要 unicode 常量。只需使用字符查看器并直接输入字符即可。
let sparklingHeart = ""
如果我理解您要实现的目标,那么:
在 XCode 中按“ctrl + cmd + space”。 'hearts' 表情符号
的示例用法
cell.textLabel?.text = "❤️" + " \(liker) liked \(userBeingliked)'s photo"
正如 Greg 在上面发布的那样,您可以使用 OSx 字符查看器直接将表情符号输入 Swift。默认情况下禁用字符查看器。启用方法如下:
转到系统偏好设置>语言和区域>键盘偏好设置>键盘然后选中在菜单栏中显示键盘、表情符号和符号查看器.选中后,您可以从 Wifi 和 Date/Time 图标旁边右上角的菜单栏中打开角色查看器。
1 解码 Unicode:
extension String {
var decodeEmoji: String{
let data = self.data(using: String.Encoding.utf8);
let decodedStr = NSString(data: data!, encoding: String.Encoding.nonLossyASCII.rawValue)
if let str = decodedStr{
return str as String
}
return self
}
}
用法
let decodedString = yourString.decodeEmoji
2 Unicode编码:
extension String {
var encodeEmoji: String{
if let encodeStr = NSString(cString: self.cString(using: .nonLossyASCII)!, encoding: String.Encoding.utf8.rawValue){
return encodeStr as String
}
return self
}
}
用法
let encodedString = yourString.encodeEmoji
从你的十六进制“0x1F52D”到实际的表情符号
let c = 0x1F602
下一步可能会从你的十六进制中得到一个 Uint32
let intEmoji = UnicodeScalar(c!).value
从这里你可以做类似
的事情
titleLabel.text = String(UnicodeScalar(intEmoji)!)
这里有一个“”
它也适用于十六进制范围
let emojiRanges = [
0x1F600...0x1F636,
0x1F645...0x1F64F,
0x1F910...0x1F91F,
0x1F30D...0x1F52D
]
for range in emojiRanges {
for i in range {
let c = UnicodeScalar(i)!.value
data.append(c)
}
}
例如从您的 Hex 范围中获取多个 UInt32
Chris Slowik 和 Greg 的答案很接近。
最简单的答案就是从这个“改写”你的字符串:
var myText: String = "\ue008"
为此:
var myText: String = "\u{008}"
在您所附的 link 上找到的 Unicode 并没有错,正如其他人所声称的那样。您只需要在字符串中重新表述即可。
上面示例中的重要代码是“008”部分。
我创建了一个简单的函数来将这些类型的 Unicode 转换为相应的表情符号:
func convertHexToEmoji(_ u:Int) -> String {
return "\(UnicodeScalar(u)!)" }
使用:
let myText = convertHexToEmoji(008)
print(myText)
这花了我一些时间在 MacOS 11 中弄清楚,所以我想分享一下。
如果您更喜欢输入 unicode 字符而不是粘贴文字表情符号,您可以像这样找到系统表情符号的 unicode:
Focus/click 到文本字段(例如网络浏览器中的搜索栏)。
按 ctrl+cmd+space
或转到菜单栏中的 Edit->Emoji & Symbols
。
在角色查看器中向上滚动,直到您在右上角看到 window 展开图标:
在展开的角色查看器 window 中,按左上角按钮和 select Customize List...
。
向下滚动到 Code Tables
最小化列表,展开列表,打开 Unicode
,然后按 Done
(系统将此 window 更改为出于某种原因的黑暗模式)。
现在,单击不同的表情符号,您应该会在图片下方看到 unicode。
然后像这样注入 unicode:
var myText: String = "\u{e008}"
Here 是一篇很好的文章,引用了 iOS 个表情符号及其代码。例如\ue008
为小相机。
我在我的代码中试过这个:
var myText: String = "\ue008"
这不被 Xcode 接受。如何包含它?
来自 swift 文档:
let dollarSign = "\u{24}" // $, Unicode scalar U+0024
let blackHeart = "\u{2665}" // ♥, Unicode scalar U+2665
let sparklingHeart = "\u{1F496}" // , Unicode scalar U+1F496
您可以直接使用⌘ ^ Space
插入表情符号。
或者,根据 Greg 的回答:
var myText: String = "\u{e008}"
您根本不需要 unicode 常量。只需使用字符查看器并直接输入字符即可。
let sparklingHeart = ""
如果我理解您要实现的目标,那么:
在 XCode 中按“ctrl + cmd + space”。 'hearts' 表情符号
的示例用法cell.textLabel?.text = "❤️" + " \(liker) liked \(userBeingliked)'s photo"
正如 Greg 在上面发布的那样,您可以使用 OSx 字符查看器直接将表情符号输入 Swift。默认情况下禁用字符查看器。启用方法如下:
转到系统偏好设置>语言和区域>键盘偏好设置>键盘然后选中在菜单栏中显示键盘、表情符号和符号查看器.选中后,您可以从 Wifi 和 Date/Time 图标旁边右上角的菜单栏中打开角色查看器。
1 解码 Unicode:
extension String {
var decodeEmoji: String{
let data = self.data(using: String.Encoding.utf8);
let decodedStr = NSString(data: data!, encoding: String.Encoding.nonLossyASCII.rawValue)
if let str = decodedStr{
return str as String
}
return self
}
}
用法
let decodedString = yourString.decodeEmoji
2 Unicode编码:
extension String {
var encodeEmoji: String{
if let encodeStr = NSString(cString: self.cString(using: .nonLossyASCII)!, encoding: String.Encoding.utf8.rawValue){
return encodeStr as String
}
return self
}
}
用法
let encodedString = yourString.encodeEmoji
从你的十六进制“0x1F52D”到实际的表情符号
let c = 0x1F602
下一步可能会从你的十六进制中得到一个 Uint32
let intEmoji = UnicodeScalar(c!).value
从这里你可以做类似
的事情titleLabel.text = String(UnicodeScalar(intEmoji)!)
这里有一个“”
它也适用于十六进制范围
let emojiRanges = [
0x1F600...0x1F636,
0x1F645...0x1F64F,
0x1F910...0x1F91F,
0x1F30D...0x1F52D
]
for range in emojiRanges {
for i in range {
let c = UnicodeScalar(i)!.value
data.append(c)
}
}
例如从您的 Hex 范围中获取多个 UInt32
Chris Slowik 和 Greg 的答案很接近。 最简单的答案就是从这个“改写”你的字符串:
var myText: String = "\ue008"
为此:
var myText: String = "\u{008}"
在您所附的 link 上找到的 Unicode 并没有错,正如其他人所声称的那样。您只需要在字符串中重新表述即可。
上面示例中的重要代码是“008”部分。
我创建了一个简单的函数来将这些类型的 Unicode 转换为相应的表情符号:
func convertHexToEmoji(_ u:Int) -> String {
return "\(UnicodeScalar(u)!)" }
使用:
let myText = convertHexToEmoji(008)
print(myText)
这花了我一些时间在 MacOS 11 中弄清楚,所以我想分享一下。
如果您更喜欢输入 unicode 字符而不是粘贴文字表情符号,您可以像这样找到系统表情符号的 unicode:
Focus/click 到文本字段(例如网络浏览器中的搜索栏)。
按
ctrl+cmd+space
或转到菜单栏中的Edit->Emoji & Symbols
。在角色查看器中向上滚动,直到您在右上角看到 window 展开图标:
在展开的角色查看器 window 中,按左上角按钮和 select
Customize List...
。向下滚动到
Code Tables
最小化列表,展开列表,打开Unicode
,然后按Done
(系统将此 window 更改为出于某种原因的黑暗模式)。现在,单击不同的表情符号,您应该会在图片下方看到 unicode。
然后像这样注入 unicode:
var myText: String = "\u{e008}"