苹果的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升级相关推荐

  1. idea 升级到2020后 无法启动_升级iOS 14尝鲜后,无法降级 iOS13.5.1?

    北京时间6月23日凌晨1点,苹果在线上举行了WWDC 2020全球开发者大会.给我们正式带来了iOS 14,并且在凌晨3点半时的时候,苹果发布 iOS 14 beta 内测版系统,并提供内测升级方法, ...

  2. Atitit.提升 升级类库框架后的api代码兼容性设计指南

    Atitit.提升 升级类库框架后的api代码兼容性设计指南 1. 增加api直接增加,版本号在注释上面增加1 2. 废弃api,使用主见@dep1 3. 修改api,1 4. 修改依赖import, ...

  3. 淘客API升级后的解决方案,怎么采集淘宝的商品数据

    淘客API升级后的解决方案,怎么采集淘宝的商品数据 继淘客API只能皇冠会员才能使用之后,研究了很多方法来解决采集的数据的问题 现在采用的是URL方式采集搜索页,然后商品API获取商品详情的方法. 然 ...

  4. 淘客API升级后,方维分享系统不能采集商品的解决方法,用天猫精品库API采集...

    淘客API升级后,方维分享系统不能采集商品的解决方法,用天猫精品库API采集 淘客API禁止的解决方法,方维分享系统采集天猫精品库的商品: 需要的淘宝API接口: TmallItemsDiscount ...

  5. Android api升级到31 导致的兼容性问题

    1.问题描述: android api升级到31的时候会引发很多兼容性问题,今天主要记录其中一个问题, Targeting S+ (version 31 and above) requires tha ...

  6. 如何最小化云API升级造成的中断?

    云提供商升级API时,开发者必须升级并重新测试自己的软件,如何为这个过程做好准备并且最小化影响? 云提供商为了扩展和改善服务进行了服务升级,通常需要进行API升级.但是伴随着利好的部分,这些应用编程接 ...

  7. 在 Oracle 云上用 Cluster API 升级 K8s 集群

    ❝ 本文转自方石剑的博客,原文:https://juejin.cn/post/7130839991999004680,版权归原作者所有.欢迎投稿,投稿请添加微信好友:cloud-native-yang ...

  8. Sublime Text 4 首个稳定版终于来了:支持 GPU 渲染、兼容旧版本、Python API 升级

    技术编辑:小魔丨发自 思否编辑部 公众号:SegmentFault Sublime Text 是一个轻量.简洁.高效.跨平台的编辑器,支持 Linux.Windows 和 Mac OS X 操作系统, ...

  9. Java String类Api文档

    String类APi文档 常用方法概述 比较相关 返回值类型 方法名 描述 boolean contentEquals() 将此字符串与指定的 StringBuffer 比较. boolean end ...

最新文章

  1. Python 代码规范
  2. Ext.NET加入自定义验证JS函数
  3. 关系竞争 :今目标可能成为个一个的企业社交网络
  4. Silverlight 开发入门1
  5. Delphi的“动态窗体”技术实际应用[网络摘抄]
  6. 基于ArcGIS10.0和Oracle10g的空间数据管理平台(C#开发)-数据库设计
  7. oracle解析儒略日,利用to_char获取当前日期准确的周数!
  8. java输入年月输出日历_java输入年份打印该年份的年历
  9. 电脑常见问题_解决PC常见问题 篇二十:垃圾佬手把手教你如何正确缩电脑配置砍预算...
  10. 最详细的SAI笔刷设置教程,非常全面详细!
  11. 伍德里奇计量经济学导论pdf_伍德里奇 计量经济学导论(第六版) 第3章
  12. 汉诺塔问题的总结(1)
  13. 网络信息安全期末复习要点
  14. 解决局域网文件传输慢的问题
  15. w764位计算机右键管理,为win764位旗舰版右键添加“管理员取得所有权”方法
  16. MFC ListCtrl的cheek框的全选和反选
  17. vue双向绑定是如何实现的
  18. 杨宁反思创业痛点:没有将项目和公司坚持下去
  19. 实现QQ音乐项目的一些技术点jQuery,html5
  20. 无线通信中的TD系统(TD-LTE)

热门文章

  1. POJ 3669-Meteor Shower [bfs] 《挑战程序设计竞赛》2.1
  2. GeckoFx v45浏览器控件实现文件下载出现异常的解决办法
  3. Redis实现朋友圈,微博等Feed流功能,实现Feed流微服务(业务场景、实现思路和环境搭建)
  4. 发现最优秀的人工智能对话体验
  5. 在linux退出时清空历史记录
  6. ZZULIOJ:1096: 水仙花数(函数专题)
  7. wpa或者wpa2暴力破解WiFi(因为wep已经很少有人使用了,所以略过)
  8. IOS重写unity Splash,消除黑屏,播放开场动画视频
  9. ​央视新闻曝光TR外汇平台诈骗案,涉案金额高达5亿元
  10. linux远程溢出,Linux netkit in.telnetd远程溢出漏洞