官术网_书友最值得收藏!

Changed interpretation of grapheme clusters

An additional big advancement is the way String interprets grapheme clusters. Conformity of Unicode 9 gives resolution to this.

The use of extended grapheme clusters for character values in Swift 4 means that concatenation and modification of Strings may cause no affect on a resulting String's character count.

For example, if you append a COMBINING ACUTE ACCENT (U+0301) to the end of the String initialized to "cafe", the resulting String will have a character count of 4, and the fourth character will be "e", not e':

var word = "cafe"
print("total chars in \(word) is \(word.count)")

It prints "total chars in cafe is 4":

word += "\u{301}"    // COMBINING ACUTE ACCENT, U+0301
print("totalchars in \(word) is \(word.count)")

It prints "total chars in cafe? is 4", whereas the count would increase by 1 to reflect 5 as a result of print statement earlier.

Sequence of one or more Unicode scalars that when combined generate a single human-readable character is known as an extended grapheme cluster.

Similar to Dictionaries, the total number of modifications made to String API can be summed up by the following image:

主站蜘蛛池模板: 晋江市| 固原市| 蓝山县| 绥棱县| 崇左市| 开江县| 墨江| 同仁县| 邯郸县| 通榆县| 新津县| 察雅县| 冕宁县| 正宁县| 鸡泽县| 西青区| 河津市| 琼海市| 十堰市| 宜丰县| 朝阳县| 玛纳斯县| 乌苏市| 马边| 敦煌市| 彭泽县| 合作市| 新宁县| 江源县| 凤山市| 长沙市| 秦皇岛市| 温州市| 浮山县| 澄江县| 措美县| 兰州市| 泗水县| 三河市| 泸西县| 北宁市|