Swift3升级到Swift4后String的API升级
苹果的swiftAPI更新很快,现在已经升级到swift4,在我做API适配的时候发现Swift4对String的操作简化了很多,所以写一篇文章总结一下,希望能够帮助到有需要的人。在Swift4之前使用String的字符集需要使用String.characters来获取,如代码
var str1 = "What are doing?"
//Swift3
for c in str1.characters {print(c)
}//swift4
for c in str1 {print(c)
}//通过两种版本代码对比发现Swift4比Swift3代码简洁的多。
Swift3获取字符串的字符数(长度)是String.characters.count,在Swift4中直接String.count就行了,代码对比如下
//Swift3
let length = str1.characters.count//Swift4
let length = str1.count当然如果想要获取特定字符集的长度还是可以用到下面这种写法
let length = str.utf8.count
当然在swift4之后字符串截取的api变化也很大,之前的截取方法都被废弃掉了,下面我们使用代码来说明。
let template = "<<<Hello>>>"
let indexStartOfText = template.index(template.startIndex, offsetBy: 3)
let indexEndOfText = template.index(template.endIndex, offsetBy: -3)// Swift4的写法
let substring1 = template[indexStartOfText...] // "Hello>>>"// Swift3的接口已经被废弃,代码如下
// let substring1 = template.substring(from: indexStartOfText)///截取到某个位置
// Swift4
let substring2 = template[..<indexEndOfText] // "<<<Hello"// Swift3的接口已被废弃
// let substring2 = template.substring(to: indexEndOfText)//截取到某个区间
/ Swift4
let substring3 = template[indexStartOfText..<indexEndOfText] // "Hello"// Swift3的接口在swift4中已被废弃
// let substring3 = template.substring(with: indexStartOfText..<indexEndOfText)//在最后把截取得到的字符串需要转换回String
let strNew = String(subString)
如果还是习惯以前subString的写法也可以像下边这样写
let digits = "0123456789"
let index4 = digits.index(digits.startIndex, offsetBy: 4)// The first of each of these examples is preferred
digits[...index4] // "01234"
digits.prefix(through: index4) digits[..<index4] // "0123"
digits.prefix(upTo: index4) digits[index4...] // "456789"
digits.suffix(from: index4)//在写截取区间值的时候一定注意开区间和闭区间的事情,他们最后得到的结果不同
查看原文:https://www.liuandy.cn/ios/2017/12/27/2170.html
Swift3升级到Swift4后String的API升级相关推荐
- idea 升级到2020后 无法启动_升级iOS 14尝鲜后,无法降级 iOS13.5.1?
北京时间6月23日凌晨1点,苹果在线上举行了WWDC 2020全球开发者大会.给我们正式带来了iOS 14,并且在凌晨3点半时的时候,苹果发布 iOS 14 beta 内测版系统,并提供内测升级方法, ...
- Atitit.提升 升级类库框架后的api代码兼容性设计指南
Atitit.提升 升级类库框架后的api代码兼容性设计指南 1. 增加api直接增加,版本号在注释上面增加1 2. 废弃api,使用主见@dep1 3. 修改api,1 4. 修改依赖import, ...
- 淘客API升级后的解决方案,怎么采集淘宝的商品数据
淘客API升级后的解决方案,怎么采集淘宝的商品数据 继淘客API只能皇冠会员才能使用之后,研究了很多方法来解决采集的数据的问题 现在采用的是URL方式采集搜索页,然后商品API获取商品详情的方法. 然 ...
- 淘客API升级后,方维分享系统不能采集商品的解决方法,用天猫精品库API采集...
淘客API升级后,方维分享系统不能采集商品的解决方法,用天猫精品库API采集 淘客API禁止的解决方法,方维分享系统采集天猫精品库的商品: 需要的淘宝API接口: TmallItemsDiscount ...
- Android api升级到31 导致的兼容性问题
1.问题描述: android api升级到31的时候会引发很多兼容性问题,今天主要记录其中一个问题, Targeting S+ (version 31 and above) requires tha ...
- 如何最小化云API升级造成的中断?
云提供商升级API时,开发者必须升级并重新测试自己的软件,如何为这个过程做好准备并且最小化影响? 云提供商为了扩展和改善服务进行了服务升级,通常需要进行API升级.但是伴随着利好的部分,这些应用编程接 ...
- 在 Oracle 云上用 Cluster API 升级 K8s 集群
❝ 本文转自方石剑的博客,原文:https://juejin.cn/post/7130839991999004680,版权归原作者所有.欢迎投稿,投稿请添加微信好友:cloud-native-yang ...
- Sublime Text 4 首个稳定版终于来了:支持 GPU 渲染、兼容旧版本、Python API 升级
技术编辑:小魔丨发自 思否编辑部 公众号:SegmentFault Sublime Text 是一个轻量.简洁.高效.跨平台的编辑器,支持 Linux.Windows 和 Mac OS X 操作系统, ...
- Java String类Api文档
String类APi文档 常用方法概述 比较相关 返回值类型 方法名 描述 boolean contentEquals() 将此字符串与指定的 StringBuffer 比较. boolean end ...
最新文章
- Python 代码规范
- Ext.NET加入自定义验证JS函数
- 关系竞争 :今目标可能成为个一个的企业社交网络
- Silverlight 开发入门1
- Delphi的“动态窗体”技术实际应用[网络摘抄]
- 基于ArcGIS10.0和Oracle10g的空间数据管理平台(C#开发)-数据库设计
- oracle解析儒略日,利用to_char获取当前日期准确的周数!
- java输入年月输出日历_java输入年份打印该年份的年历
- 电脑常见问题_解决PC常见问题 篇二十:垃圾佬手把手教你如何正确缩电脑配置砍预算...
- 最详细的SAI笔刷设置教程,非常全面详细!
- 伍德里奇计量经济学导论pdf_伍德里奇 计量经济学导论(第六版) 第3章
- 汉诺塔问题的总结(1)
- 网络信息安全期末复习要点
- 解决局域网文件传输慢的问题
- w764位计算机右键管理,为win764位旗舰版右键添加“管理员取得所有权”方法
- MFC ListCtrl的cheek框的全选和反选
- vue双向绑定是如何实现的
- 杨宁反思创业痛点:没有将项目和公司坚持下去
- 实现QQ音乐项目的一些技术点jQuery,html5
- 无线通信中的TD系统(TD-LTE)
热门文章
- POJ 3669-Meteor Shower [bfs] 《挑战程序设计竞赛》2.1
- GeckoFx v45浏览器控件实现文件下载出现异常的解决办法
- Redis实现朋友圈,微博等Feed流功能,实现Feed流微服务(业务场景、实现思路和环境搭建)
- 发现最优秀的人工智能对话体验
- 在linux退出时清空历史记录
- ZZULIOJ:1096: 水仙花数(函数专题)
- wpa或者wpa2暴力破解WiFi(因为wep已经很少有人使用了,所以略过)
- IOS重写unity Splash,消除黑屏,播放开场动画视频
- ​央视新闻曝光TR外汇平台诈骗案,涉案金额高达5亿元
- linux远程溢出,Linux netkit in.telnetd远程溢出漏洞