工作随笔——Swift中的Range和一些字符操作
截取字符串在Swift中相比OC要复杂很多,主要原因可能还是OC的NSRange的创建方法中参数类型为int,而Swift却对类型要求很严格,int不能作为参数创建Range,这要使用String中的startIndex和endIndex,但问题又出来了,如果要有灵活的范围呢?在之前可以直接就用advance函数,现在的Swift没有这个函数了,要用到advancedBy和distanceTo。
以下代码是对于Range和advancedBy函数的使用:
//截取子串
let str = "Hello,Swift"
let startIndex = str.startIndex
//方法一:使用advancedBy + stringByReplacingCharactersInRange
let endIndexA = startIndex.advancedBy(str.characters.count-)
let rangeOfHelloA = Range(start: startIndex, end: endIndexA)
let newStr = str.stringByReplacingCharactersInRange(rangeOfHelloA, withString: "")
print("newStr1 = " + newStr) //方法二:advancedBy + subStringWithRange
let newStr2 = str.substringWithRange(rangeOfHelloA)
print("newStr2 = " + newStr2) //方法三:使用NSString类型;Swift也提供了NSString和S挺
let str_OC = str as NSString
let newStr3 = str_OC.substringWithRange(NSRange(location: , length: )) as String
//或者
// let newStr3 = str_OC.substringWithRange(NSMakeRange(0, 5)) as String
print("newStr3 = " + newStr3) //插入字符
var originStr = ""
originStr.insert("", atIndex: originStr.startIndex.advancedBy())
print("newstr4 = " + originStr)
//插入字符串->字符串需要转成字符集才能进行操作
originStr.insertContentsOf("字符串".characters, at: originStr.startIndex.advancedBy())
print("newStr5 = " + originStr) //移除其中的某个字符
var originStr2 = ""
originStr2.removeAtIndex(originStr2.startIndex)
print("newStr6 = " + originStr2)
//移除子串 注意:endIndex是从整个字符的后一位开始的,直接使用originStr2.endIndex会导致越界;
let removeRange = originStr2.startIndex.advancedBy()...originStr2.endIndex.advancedBy(-)
originStr2.removeRange(removeRange)
print("newStr7 = " + originStr2)
运行结果:
工作随笔——Swift中的Range和一些字符操作的更多相关文章
- Swift 中的Range和NSRange不同
Swift中的Ranges和Objective-C中的NSRange有很大的不同,我发现在处理Swift中Ranges相关的问题的时候,总是要花费比我想象的更多的时间.不过,现在回过头来看看,发现Sw ...
- swift中Range的使用书名
在swift中Range有两种用法 1.把字符串转换成NSString来使用 //这里是把swift的字符换转换成了nsstring 使用 let str :NSString = text.strin ...
- Swift中类似C++和ruby中的final机制
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道在C++和ruby语言的错误处理中有一种final机制 ...
- 关于Swift中的指针的那些事
前言 在Objective-c的世界中,一切对象都是指针.它是一种运行时语言,具体指针的对象类型将会在运行时,由系统分配.这样虽然自由,但是却并不安全. Swift世界就不一样了,Swift的世界很安 ...
- 工作随笔——UIButton的EdgeInsets + Swift中的正则表达式;
1.UIButton的EdgeInsets UIButton的EdgeInsets方法,是用来设置title和image对于上左下右四个方向的偏移,但是很奇怪的是,刚开始只有Image,titile也 ...
- Swift 中范围和区间如何使用?
虽然现在swift语言已经发展到了2.0版了,但是相信很多学习iOS开发的童鞋仍对swift语言存在各种各样的疑问,今天小编将为大家详细介绍swift中的范围和区间,下面我们一起来看看吧. Range ...
- Swift 中枚举
Swift 中枚举高级用法及实践 字数11017 阅读479 评论0 喜欢20 title: "Swift 中枚举高级用法及实践"date: 2015-11-20tags: [AP ...
- 阿里巴巴最新开源项目 - [HandyJSON] 在Swift中优雅地处理JSON
项目名称:HandyJSON 项目地址:https://github.com/alibaba/handyjson 背景 JSON是移动端开发常用的应用层数据交换协议.最常见的场景便是,客户端向服务端发 ...
- [翻译]理解Swift中的Optional
原文出处:Understanding Optionals in Swift 苹果新的Swift编程语言带来了一些新的技巧,能使软件开发比以往更方便.更安全.然而,一个很有力的特性Optional,在你 ...
随机推荐
- 无法连接 MKS: Login(username/password)incorrect
升级到Vmware Workstation 12之后,客户端能连上虚拟机服务器,但却打不开共享的虚拟机,提示报错"无法连接 MKS: Login(username/password)inco ...
- [OC笔记] Category分类之见解
用过别的语言做过开发的同学都知道,如果你想扩充一个类,就应该去继承这个类.但是OC里面有更好的方法,那就是分类. 那什么是分类呢?就是在不改变原先类,我们可以在其中添加咱们自定义的方法,这样和同事合作 ...
- easyui 中datagrid 点击行的事件
$('#datagrid 的ID').datagrid({ onClickRow:function(index,data) { ...
- 需要一个策略文件,但在加载此媒体时未设置checkPolicyFile标志
LoaderContext的checkPolicyFile属性: 如果您从执行调用的 SWF 文件所在的域之外加载图像(JPEG.GIF 或 PNG),并且您预计将需要从 ActionScript 访 ...
- 【译】RabbitMQ:发布-订阅(Publish/Subscribe)
在前一篇教程中,我们创建了一个工作队列,我们假设在工作队列后的每一个任务都只被调度给一个消费者.在这一部分,我们将做一些完全不一样的事情,调度同一条消息给多个消费者,也就是有名的“发布-订阅”模式.为 ...
- 在ubuntu16编译安装nginx-1.10.2(full)完全自带组件
第一步:先安装全部用到的包 apt install gcc libpcre++-dev libssl-dev make \ libxml2-dev libxslt-dev libgd-dev libg ...
- ue4 Worldmachine 结合使用
最近项目需求制作一个场景的远景部分.正好可以尝试使用一下UE4的 Landscape.不过直接在 Editor 里刷地形工作量太大,刷出的地形也不真实,最关键的是 Landscape 的工具并不是那么 ...
- Daily Scrum 12.13
今日完成任务: 已经解决用户管理异常:解决主页TAG显示不正确;解决下载量不正确,完成下载量的计数. 明日任务: 黎柱金 解决文档打开时全部是同一个PDF的BUG 冯飘飘 优化右侧显示最佳资源的算法 ...
- Linux命令(ntp)
NTP时间同步 下载ntp软件包 root@rgw01:~# apt-get install ntp 调整ntp server时间 root@rgw01:~# date Mon Dec 1 17:02 ...
- php的cookie和session相同主域名共享
如何使用chrome查看cookie和session详见另一篇文章,点这里 首先说cookie, $cookieDomain = '.elf.com'; setcookie('elf', 'im el ...