【译】Swift 字符串速查表
2016-03-22 21:18
423 查看
【译】Swift 字符串速查表
2015-12-18 10:32 编辑: suiling 分类:Swift 来源:CocoaChina翻译活动10 5585
Swift字符串
招聘信息:
iOS高级开发工程师
Cocos2d-x 工程师
cocos2dx手游客户端主程
wp开发
iOS开发工程师
iOS软件工程师
iOS研发工程师
iOS讲师
iOS开发工程师
iOS高级开发工程师
iOS 高级软件工程师
本文由CocoaChina译者星夜暮晨翻译
原文:Swift String Cheat Sheet
Swift 的字符串 API 似乎让人难以习惯。此外,每次 Swift 与其标准库版本更新的时候,字符串的 API 也时不时会发生改变。你在 Stack Overflow 上寻找到的 Swift 1.2 解决方案往往不能在 Swift 2 上按照预期(甚至完全不能)使用。虽然从好的方面来看,我发现苹果的官方文档是非常有用的(参见本文底部的链接),但是出于备查的目的以及为了帮助仍挣扎于其中的人们,在此我仍旧了列出一系列的 String 代码片段:
(Gist 和我 Github 仓库中的 Playground 都已提供)
字符串初始化
创建一个字符串对象有无数种方式可以使用,包括字面量、从其他 Swift 类型转换、Unicode等等。
字符串是值类型(Value Type),当用其赋值或者函数传参的时候它会被拷贝(copied)。所拷贝的值在修改的时候是懒加载的(lazy)。
检测一个字符串是否为空:
检测一个字符串是否拥有某个前缀或者后缀:
顾名思义:
字符串并不是某种编码的字符集合(collection views),但是它可以通过相应的属性为不同的编码形式提供所对应的字符集合。
字符串并没有一个直接的属性用以返回其包含的字符总数,因为字符总数只对特定的编码形式来说才有意义。因此,字符总数需要通过不同编码的字符集合来访问:
每个字符集合都拥有“索引”,可以通过它来访问整个集合中的元素。这或许是在使用字符串过程中碰到的最大难点之一了。你不能使用下标语法来访问字符串中的任意元素(比如说string[5])。
要遍历某个集合中的所有元素的时候(从现在开始我都将使用 characters 集合),可以通过 for...in 循环来进行:
startIndex:返回首个元素的位置,如果为空,那么和 endIndex 的值相同。
endIndex:返回字符串逾尾(past the end)的位置。
注意到如果使用 endIndex 的话,就意味着你不能直接将其作为下标来进行使用,因为这会导致越界。
successor():获取下一个元素
predecessor():获取上一个元素
advancedBy(n):向前或者向后跳 n 个元素
下面是一些用例,注意到如果必要的话你可以将操作串联起来:
要检出字符串集合中某个范围内的元素的话,可以使用范围。范围可以通过 start 和 end 索引来完成创建:
通过索引或者范围来截取字符串
要通过索引或者范围来截取字符串的话,有许多方法:
获取前缀或者后缀
如果你需要得到或者抛弃字符串前面或者后面的某些元素的话,可以:
要在指定位置插入字符的话,可以通过索引:
要替换一个范围的字符串内容的话:
添加元素
可以通过“+”运算符将字符串相互连接起来,也可以使用 appendContentsOf 方法:
从一个字符串当中移除某个元素,需要注意这个方法将会使该字符串此前所有的任何索引标记(indice)失效:
移除字符集中某个范围的字符,需要主要的是这个方法同样也会使索引标记失效:
String 可以转换为 NSString 从而与 Objective-C 桥接。如果 Swift 标准库没有你所需要的功能的话,那么导入 Foundation 框架,通过 NSString 来访问这些你所需要的方法。
请注意这个桥接方法并不是无损的,因此尽可能使用 Swift 标准库完成大部分功能。
使用 NSString 方法的一个例子就是执行内含字符串的检索:
我发现在 Xcode 中通过 Playground 来熟悉 API 是一个非常好的选择。如果你想要抢先体验一下所有这些功能的话,这个文章的 Playground 可以从我的 Github 仓库中下载。
拓展阅读
Swift Standard Library Reference
苹果 Swift 官方博客的Strings in Swift 2
Swift Programming Language - Strings and Characters
Why is Swift’s String API So Hard?作者:Mike Ash
相关文章推荐
- Swift中编写单例的正确方式
- 苹果发布Xcode 7.3,Swift更新至2.2版本
- thrift:swift项目笔记
- Swift之下标脚本
- IOS/Swift UIView中的坐标转换
- Swift 开发语法
- Swift iOS 日期操作:NSDate、NSDateFormatter
- Swift 调用C函数
- swift开发笔记24 解决键盘遮挡输入框 的方法
- swift如何动态创建对象
- iOS 分析一个支持GIF的UIImage扩展:SwiftGIF
- SWIFT基础语法(三)
- oc 和 swift 互相调用
- Swift常用全局常量、函数
- Swift中页面逆向传值
- 《从零开始学Swift》学习笔记(Day 63)——Cocoa Touch设计模式及应用之单例模式
- swift2使用sqlite数据库及常见错误总结(模拟机下)
- Swift函数和闭包
- swift - Property Observers
- 苹果发布Xcode 7.3,Swift更新至2.2版本