什么是“;扩展的图素簇是正则等价的”;就Swift字符串而言是什么意思?

什么是“;扩展的图素簇是正则等价的”;就Swift字符串而言是什么意思?,swift,Swift,说: 如果两个字符串值(或两个字符值)的扩展图形集簇在规范上等价,则认为它们相等。如果扩展的字组簇具有相同的语言含义和外观,即使它们在幕后由不同的Unicode标量组成,它们在规范上是等价的 扩展的grapheme集群是什么意思?正如您所参考的: 扩展的grapheme集群是一个或多个Unicode标量的序列,它们(在组合时)生成单个人类可读字符 也就是说,扩展的grapheme集群是单个“可见字符”,通常,光标在文本编辑器中围绕它跳跃 例如,ё和̉看起来都是相同的,它们都是一个扩展的图形集簇,

说:

如果两个字符串值(或两个字符值)的扩展图形集簇在规范上等价,则认为它们相等。如果扩展的字组簇具有相同的语言含义和外观,即使它们在幕后由不同的Unicode标量组成,它们在规范上是等价的

扩展的grapheme集群是什么意思?

正如您所参考的:

扩展的grapheme集群是一个或多个Unicode标量的序列,它们(在组合时)生成单个人类可读字符

也就是说,扩展的grapheme集群是单个“可见字符”,通常,光标在文本编辑器中围绕它跳跃

例如,
ё
̉
看起来都是相同的,它们都是一个扩展的图形集簇,但第一个由单个Unicode标量(或代码点)生成,而第二个由两个:

  • 西里尔字母IO
    =[
    西里尔字母IO
    ]
  • 西里尔文小写字母IE
    “̉组合分音符
    ]
ё
а
在规范上是等效的,因此,即使它们是由不同的Unicode码点序列生成的,它们也被认为是相等的(例如,与比较精确的UTF-16码单元的情况相反):

准确地说,“扩展的图形集簇”是来自的文本分割算法之一。未编码的Unicode文本是Unicode代码点序列。文本分割算法分析此序列并识别“可见字符”(也称为“扩展的图形集簇”)的边界


如果您对细节感兴趣,最好从以下方面开始。

请为您的问题提供一些上下文。您在哪里看到了这一点?如果合适,请添加相关代码。两个字符串值(或两个字符值)如果扩展的字符集簇在规范上是等价的,则它们被视为等价的。如果扩展的字符集簇具有相同的语言含义和外观,则它们在规范上是等价的,即使它们在幕后由不同的Unicode标量组成。from:这一切都需要你来回答。
let e1 = "ё"
let e2 = "ё"

e1.unicodeScalars.count // 1
e2.unicodeScalars.count // 2
e1 == e2 // true, because Swift String uses canonical equivalence
(e1 as NSString).isEqual(to: e2) // false, because NSString compares UTF-16 code units