String

您所在的位置:网站首页 string字符串反转方法 String

String

2023-07-16 22:09| 来源: 网络整理| 查看: 265

字符串基本上表示为 UTF-16 码元的序列。在 UTF-16 编码中,每个码元都是 16 位长。这意味着最多有 216 个或 65536 个可能的字符可表示为单个 UTF-16 码元。该字符集称为基本多语言平面(BMP),包含最常见的字符,如拉丁字母、希腊字母、西里尔字母以及许多东亚字符。每个码元都可以写成一个字符串,其中 \u 之后跟四个十六进制数字。

然而,整个 Unicode 字符集比 65536 大得多。额外的字符作为代理对(surrogate pairs)存储在 UTF-16 中,代理对是表示单个字符的 16 位码元对。为了避免起义,该对的两个部分必须介于 0xD800 和 0xDFFF 之间,并且这些码元不用于对单码元(single-code-unit)进行编码。因此,“单独的代理项”通常不是操作字符串的有效值——例如 encodeURI() 将为单独的代理项抛出 URIError。每个 Unicode 字符由一个或者两个 UTF-16 码元组成,也称为 Unicode 码位(codepoint)。每个 Unicode 码位都可以使用 \u{xxxxxx} 写成一个字符串,其中 xxxxxx 表示 1–6 个十六进制数字。

在 Unicode 字符之上,有一些 Unicode 字符序列应该被视为一个视觉单元,被称为字素簇(grapheme cluster)。更通常的案列是 emoji:很多具有一系列变化的 emoji 实际上是由多个 emoji组成的,通常由 (U+200D)字符连接。

你必须小心迭代字符级别。例如,split("") 将按照 UTF-16 码元分割并强代理对分开。字符串索引也是指的每个 UTF-16 码元的索引。在另一方面,@@iterator() 按 Unicode 码位迭代。遍历字素簇将需要一些自定义代码。

js

"😄".split(""); // ['\ud83d', '\ude04']; splits into two lone surrogates // "Backhand Index Pointing Right: Dark Skin Tone" [..."👉🏿"]; // ['👉', '🏿'] // splits into the basic "Backhand Index Pointing Right" emoji and // the "Dark skin tone" emoji // "Family: Man, Boy" [..."👨‍👦"]; // [ '👨', '‍', '👦' ] // splits into the "Man" and "Boy" emoji, joined by a ZWJ // The United Nations flag [..."🇺🇳"]; // [ '🇺', '🇳' ] // splits into two "region indicator" letters "U" and "N". // All flag emojis are formed by joining two region indicator letters


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3