大家好,感谢邀请,今天来为大家分享一下全面解析:Unicode字符集的奥秘与应用的问题,以及和的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
Unicode标量
本质上,Swift 中的String 类型是根据Unicode 标量创建的。 Unicode 标量是表示字符或修饰符的唯一21 位数字。例如,U+0061 代表拉丁小写字母A 的a,U+1F425 代表FRONT-FACING BABY CHICK。
需要注意的是,并不是所有的21位Unicode编码单元都分配给一个字符,有一些是保留给将来分配的。分配给字符的标量通常都有一个名称,例如上例中的LATIN SMALL LETTER A 和FRONT-FACING BABY CHICK。
注意:Unicode 标量是编码空间[U+0000, U+D7FF] 或[U+E000, U+10FFFF] 中的任何编码单元。 Unicode 不包含代理对,代理对是编码空间[U+D800, U+DFFF] 中的编码单元。
可扩展的字形集群
Swift 中的每个字符实例代表一个单独的可扩展字形簇。可扩展字形簇由一个或多个Unicode 标量组成,可以生成人类可读的字符。
让eAcute: 字符="u{E9}" //
let mergedEAcute: Character="u{65}u{301}" //e 后接
//eAcute 是,combinedEAcute 是
以上是一个例子。字母 可以由单个Unicode 标量(带锐音的拉丁文小写字母E,或U+00E9)表示。然而,字母 也可以用一对标量来表示----- 字母e(拉丁小写字母)后跟字母(组合锐音符号),即U+0065 后跟U+0301。当Unicode 文本渲染系统渲染标量COMBINING ACUTE ACCENT 时,它会以图形方式作用于其前面的标量。将e 更改为。
在上面的两个示例中,字母 由单个字符值表示来表示字素簇。在第一个示例中,簇包含一个标量,在第二个示例中,它包含2 个标量。
可扩展的字符簇增加了灵活性,允许我们使用单个字符来表示许多复杂的脚本字符。例如,韩语字母表中的音节可以表示为一组预分解或分解的元素。以下两个字符在Swift 中表示相同的字形:
让precomposed: 字符="u{D55C}" //
let decomposed: Character="u{1112}u{1161}u{11AB}" //、、
//预组合为,分解后为
可扩展的字符簇使得可以将其他标量作为字符的一部分包围:
让encapsulatedEAcute: 字符="u{E9}u{20DD}"
//封闭的EAcute 是
区域指示符的Unicode 标量可以组合起来生成新字符,例如区域指示符符号字母U(U+1F1FA) 和区域指示符符号字母S(U+1F1F8):
让RegionalIndicatorForUS: 字符="u{1F1FA}u{1F1F8}"
//RegionalIndicatorForUS 是
字符的数量
要获取String中的字符数,可以使用String的count属性:
让异常动物园="考拉,蜗牛,企鹅,单峰骆驼"
print("unusualMenagerie 有(unusualMenagerie.count) 个字符")
//print "unusualMenagerie 有40 个字符
值得注意的是,由于Swift 中使用了Character 的可扩展置信度聚类,字符串的串联或修改并不一定会改变字符串中的字符数。
var word="咖啡馆"
print("(word) 中的字符数为(word.count)")
//"cafe 中的字符数为4"
word +="u{301}" //组合重音符号,U+0301
print("(word) 中的字符数为(word.count)")
//"cafe 中的字符数为4
例如,如果先初始化一个4个字符的新字符串cafe,然后在末尾拼接字符COMBINING ACUTE ACCENT (U+0301),那么结果仍然是4个字符,因为第四个字符从e变成了。
注意:一个可扩展字形组可以由多个Unicode标量组成,这意味着不同的字符或相同的字符代表不同的结果,并且存储它们所需的内存也不同。因此,在Swift 中,字符串中的字符并不都占用相同的内存。这导致在不遍历字符串的情况下无法确定字形组的边界,从而无法确定字符串中的字符数。如果您正在处理特别长的字符串,请注意count 属性需要一个Unicode 标量来迭代整个字符串以确定字符串中的字符数。
文章到此结束,如果本次分享的全面解析:Unicode字符集的奥秘与应用和的问题解决了您的问题,那么我们由衷的感到高兴!
【全面解析:Unicode字符集的奥秘与应用】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
真没想到字符编码还能这么复杂!
有10位网友表示赞同!
我一直以为是英文符号更多啊,居然还有这么多语言的字符呢。
有15位网友表示赞同!
学习了解Unicode能让我更好地理解电脑处理文字的过程吗?
有13位网友表示赞同!
我的手机不支持所有Unicode字符吗?感觉有些特殊符号显示不了。
有20位网友表示赞同!
Unicode在网络安全领域有什么应用吗?
有15位网友表示赞同!
原来中文的编码也有很多种,之前一直以为是统一的。
有17位网友表示赞同!
Unicode能兼容未来新语言的出现吗?
有11位网友表示赞同!
使用Unicode有什么特别好处呢?
有12位网友表示赞同!
我需要学习一些编程知识才能更深入地了解Unicode吗?
有17位网友表示赞同!
感觉Unicode越来越重要了,全球化趋势下大家都会用到它。
有19位网友表示赞同!
这个名字听起来很高级哈!
有18位网友表示赞同!
学习一点Unicode知识或许对我的工作有所帮助。
有9位网友表示赞同!
我还以为UNICODE只是一个简单的小工具呢! Turns out it's pretty complex.
有16位网友表示赞同!
Unicode是不是只有英文使用? 听说很多中文编码都在Unicode里?
有18位网友表示赞同!
我感觉Unicode这个词汇听起来就很专业,要慢慢琢磨一下。
有11位网友表示赞同!
有没有什么简单易懂的资源来学习unicode?
有20位网友表示赞同!
在使用编程语言的时候需要用到Unicode吗?
有16位网友表示赞同!
Unicode可以帮助解决字符显示不一致的问题吗?
有15位网友表示赞同!