gpt4 book ai didi

ios - 如何分离在文本字段上输入的表情符号(通过默认键盘)

转载 作者:搜寻专家 更新时间:2023-10-30 22:14:03 30 4
gpt4 key购买 nike

我在文本字段中输入了两个表情符号👨‍👨‍👧‍👧😍,这里我得到的总长度为 5 个字符,其中第一个表情符号为 4 个字符,第二个为 1 个字符。看起来苹果已经将 4 个表情符号组合成一个。

我正在寻找swift 代码,我可以在其中分别分隔每个表情符号,假设通过上面的示例我应该为每个表情符号分别获取 2 个字符串/字符。

谁能帮我解决这个问题,我试过很多东西,比如正则表达式分离或 componentsSeparatedByString 或 characterSet。但不幸的是,结果是负面的。

提前致谢。

最佳答案

Swift 4 (Xcode 9) 更新

从 Swift 4 开始(使用 Xcode 9 beta 测试)“Emoji ZWJ Sequence”是被视为 Unicode 9 标准规定的单个 Character:

let str = "👨‍👨‍👧‍👧😍"
print(str.count) // 2
print(Array(str)) // ["👨‍👨‍👧‍👧", "😍"]

String 也是它的字符的集合,所以我们可以调用 str.count 获取长度,调用 Array(str) 获取所有字符作为数组。


(Swift 3 及更早版本的旧答案)

这只是部分答案,可能对这种特殊情况有所帮助。

“👨‍👨‍👧‍👧”确实是四个独立字符的组合:

let str = "👨‍👨‍👧‍👧😍" //
print(Array(str.characters))

// Output: ["👨‍", "👨‍", "👧‍", "👧", "😍"]

与 U+200D(零宽度连接器)粘合在一起:

for c in str.unicodeScalars {
print(String(c.value, radix: 16))
}

/* Output:
1f468
200d
1f468
200d
1f467
200d
1f467
1f60d
*/

使用 .ByComposedCharacterSequences 枚举字符串选项正确组合了这些字符:

var chars : [String] = []
str.enumerateSubstringsInRange(str.characters.indices, options: .ByComposedCharacterSequences) {
(substring, _, _, _) -> () in
chars.append(substring!)
}
print(chars)

// Output: ["👨‍👨‍👧‍👧", "😍"]

但是在其他情况下这不起作用,例如“标志”是“区域指标”的序列字符”(比较 Swift countElements() return incorrect value when count flag emoji )。与

let str = "🇩🇪"

上面循环的结果是

["🇩", "🇪"]

这不是想要的结果。

完整规则在 "3 Grapheme Cluster Boundaries" 中定义在“Standard Annex #29 UNICODE TEXT SEGMENTATION”中统一码标准。

关于ios - 如何分离在文本字段上输入的表情符号(通过默认键盘),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34524322/

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