博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift2 String
阅读量:6178 次
发布时间:2019-06-21

本文共 1263 字,大约阅读时间需要 4 分钟。

写在开头 iOS开发者 群532084214 给大家提供一个交流技术 也可以聊天打屁的平台

在Swift2 中 String 不在遵守CollectionType协议 现在的String是Character的集合体 现在操作起来就类似于Array

为什么改变虽然字符串看起来是一个字符的集合 但是他有很多不同于其他集合类型的操作 如Array Set Dictionary

和之前不同的地方

当我们想往数组里面添加一个元素 其实是数组包含了这个元素 (Dictionary Set)类似 但是对于字符串操作 不是 当我们往字符串里添加一个东西 其实字符串就发生了变化

var letters: [Character] = ["c", "a", "f", "e"]var string: String = String(letters)print(letters.count) // 4print(string) // cafeprint(string.characters.count) // 4复制代码

如果你想在字符串里面添加一个字符 如 U+0301 其实这个字符串长度还是4 但是最后一个字符变成了é

let acuteAccent: Character = "\u{0301}" // ´ COMBINING ACUTE ACCENT' (U+0301)string.append(acuteAccent)print(string.characters.count) // 4 print(string.characters.last!) // é复制代码

这个结果和其他语言的集合类型差距非常大

根据结果我们现在猜一下原因

补充

另外一个字符串的和集合类型的区别是 集合类型是值类型 用 == 来判等 集合里面的元素完全一样 集合就相等

但是字符串不是 字符串基于基于语义和外观判等(就算unicode编码不一样) 如 这里举个韩文的意思 (我看不懂韩文)

let decomposed = "\u{1100}\u{1161}" // ᄀ + ᅡlet precomposed = "\u{AC00}" // 가decomposed == precomposed // true复制代码

这两句话在韩语中语义一样 所以就判等 (真是独特的语言)

Swift 虽然不是CollectionType 但是有些行为操作起来还是和CollectionType很像的 下面是一张字符在不同编码时候的对比

字符串在对比的时候是按照不同语言字符集的界定范围去比对的 详情见这里 https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html#//apple_ref/doc/uid/TP40014097-CH7-ID285

转载地址:http://onzda.baihongyu.com/

你可能感兴趣的文章
[体系结构]设计模式(五)
查看>>
分布式文件系统
查看>>
其实很简单 微星为你详解Z77主板BIOS设置
查看>>
在Ubuntu Kylin下安装JDK1.8
查看>>
Hadoop 学习一
查看>>
Linux中生成/etc/shadow的加密密码
查看>>
《gcc五分钟系列》第三节:-o选项
查看>>
批量检测主机存活状态
查看>>
解决 error: gnu/stubs-32.h: No such file or directory
查看>>
imread 函数 的相关细节
查看>>
分布式和事务
查看>>
C#学习常用类(1002)---KeyValuePair<TKey, TValue> 结构
查看>>
浅谈grep命令查找匹配内容的使用、参数、正则
查看>>
磁盘配额
查看>>
UserInputControls用户输入控制
查看>>
我的友情链接
查看>>
Nginx+Lua架构开发目录贴
查看>>
mysql备份方法(热备)
查看>>
scala匿名函数
查看>>
vlan技术【实现】vlan简介和SVI实现不同vlan间通信
查看>>