String 两个字符串具有相同的语言含义是什么意思?

String 两个字符串具有相同的语言含义是什么意思?,string,swift,unicode,string-comparison,String,Swift,Unicode,String Comparison,在的swift文档中,我发现了以下内容: 两个字符串值(或两个字符值)视为相等,如果 它们的扩展石墨烯簇是正则等价的扩展 如果它们具有相同的属性,则它们在规范上是等价的 语言意义和外观,即使它们是由 幕后不同的Unicode标量 然后,文档继续进行以下示例,其中显示了两个“Cannonicy等价”的字符串 例如,带锐音符(U+00E9)的拉丁文小写字母E是规范的 相当于拉丁文小写字母E(U+0065),后跟组合 尖锐口音(U+0301)。这两个扩展的石墨烯簇都是 表示字符的有效方法,因此它们被认

在的swift文档中,我发现了以下内容:

两个字符串值(或两个字符值)视为相等,如果 它们的扩展石墨烯簇是正则等价的<强>扩展 如果它们具有相同的属性,则它们在规范上是等价的 语言意义和外观,即使它们是由 幕后不同的Unicode标量

然后,文档继续进行以下示例,其中显示了两个“Cannonicy等价”的字符串

例如,带锐音符(U+00E9)的拉丁文小写字母E是规范的 相当于拉丁文小写字母E(U+0065),后跟组合 尖锐口音(U+0301)。这两个扩展的石墨烯簇都是 表示字符的有效方法,因此它们被认为是 在规范上等价:

嗯。不知何故,
e
e
看起来是一样的,也有同样的语言意义。当然,我会给他们的。我曾经上过西班牙语课,教授对我们是否使用
e
这两种形式都不太严格,所以我猜这就是他们所指的。很公平

文档进一步显示了两个规范上不等价的字符串:

相反,拉丁文大写字母A(U+0041,或“A”),如 英语,不等同于西里尔文大写字母A(U+0410,或 俄语中使用的“А”)。这些角色在视觉上很相似,但确实如此 不具有相同的语言含义:

现在这里是警钟响起的地方,我决定问这个问题。似乎外观与此无关,因为这两个字符串看起来完全相同,文档中也承认了这一点。看来string类真正想要的是
语言意义

这就是为什么我问具有相同/不同语言含义的字符串是什么意思,因为我知道
e
e
的唯一形式,主要用于英语,但我只看到
e
在法语或西班牙语等语言中使用,既然
А
用俄语,而
A
用英语,为什么字符串类会说它们是不等价的呢

我希望我能引导大家了解我的思考过程,现在我的问题是,两个字符串具有相同的语言含义(如果可能,在代码中)意味着什么

不知何故,e和é看起来是一样的,也有同样的语言意义

没有。你误读了文件。这是文件:

带锐音符(U+00E9)的拉丁文小写字母E在规范上等同于拉丁文小写字母E(U+0065),后跟组合锐音符(U+0301)

这是U+00E9:é
这是U+0065:e
这是U+0301:'
这里是U+0065,后面是U+0301:é

因此U+00E9(é)的外观和含义与U+0065u+0301(é)相同。因此,必须平等对待他们

那么为什么西里尔字母A与拉丁字母A不同呢?给出了几个原因。以下是一些:

  • “传统的笔迹学一直将它们视为不同的文字,…”

  • 拉丁、希腊和西里尔字母的识字用户没有将彼此的字母和字母视为自己书写系统的一部分的文化习俗

  • “更重要的是,从信息技术中用于数字文本表示的字符编码问题的角度来看,拉丁语、希腊语和西里尔语作为不同脚本的先前存在的识别从最早的这种编码的实例延续到字符编码中。”

  • “拉丁语、希腊语和西里尔语的统一编码会使套管作业变得一团糟,…”

有关详细信息,请阅读技术说明。

您说过:

不知何故,e和é看起来是一样的,也有同样的语言意义

没有。你误读了文件。这是文件:

带锐音符(U+00E9)的拉丁文小写字母E在规范上等同于拉丁文小写字母E(U+0065),后跟组合锐音符(U+0301)

这是U+00E9:é
这是U+0065:e
这是U+0301:'
这里是U+0065,后面是U+0301:é

因此U+00E9(é)的外观和含义与U+0065u+0301(é)相同。因此,必须平等对待他们

那么为什么西里尔字母A与拉丁字母A不同呢?给出了几个原因。以下是一些:

  • “传统的笔迹学一直将它们视为不同的文字,…”

  • 拉丁、希腊和西里尔字母的识字用户没有将彼此的字母和字母视为自己书写系统的一部分的文化习俗

  • “更重要的是,从信息技术中用于数字文本表示的字符编码问题的角度来看,拉丁语、希腊语和西里尔语作为不同脚本的先前存在的识别从最早的这种编码的实例延续到字符编码中。”

  • “拉丁语、希腊语和西里尔语的统一编码会使套管作业变得一团糟,…”


请阅读技术说明以了解详细信息。

Unicode标准和规范中定义了规范等效性。如果两个字符串具有相同的规范表示,那么它们在规范上是等价的。@jonrsharpe没有注意到这一点。谢谢你从反例中没有得到什么,用两种不同的方法得到?代码中相同的语言含义。。。“走开”=“嘘!”问题已经回答了。这是Unicode。规范等价性在Unicode下有很好的技术定义。故事结束了。你可能会责怪苹果的文档试图解释这一点