Swift2.0 中的String(二):基本操作
Swift中的字符串,第二篇,基本操作。其他的几篇传送门(GitHub打不开链接的同学请自行把地址github改成gitcafe,或者直接去归档里找:-P):
- Swift2.0 中的String(一):常用属性
- Swift2.0 中的String(二):基本操作
- Swift2.0 中的String(三):类型转换
- 编码转换(TBD)
我的练习源代码可以在 这里
看到
首先,我们要记得使用字符串最常用的两个参数:下标(Index)和范围(Range),几乎所有API都要用到它们
let offset = str.startIndex.advancedBy(2)// offset: 3rd char
let range = Range(start: str.startIndex.advancedBy(3), end: str.endIndex.advancedBy(-2))// range: 3..<6, "345"
强制类型转换
let n = Int(str)!
String("the number is \(n)")
String(format:"%.2f, %i", 9.1, 304)
内容反转
String(str.characters.reverse())
删除和部分删除
str.removeRange(range)
str.removeAtIndex(offset)
String(str.characters.dropFirst())
String(str.characters.dropFirst(3))
String(str.characters.dropLast())
String(str.characters.dropLast(3))
//以上对character的操作不改变原来的值!
// 删除头尾空白字符
" I love you ".stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
// 删除头尾字符集
" I love you, too!".stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: ",. !"))
//清空
str.removeAll()
获取固定位置的子串
str.substringToIndex(offset)
str.substringFromIndex(offset)
str.substringWithRange(range)
str[range]
分割
st = "<123, test2,???> <测试: 数据 .>"
// 用固定字符分割
str.componentsSeparatedByString(" ")
// 用固定字符集分割
str.componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: ", ."))
过滤/查找替换
使用替换字符串的API,让替换的目标字符串为空即为过滤
// 替换固定位置子串
str.stringByReplacingCharactersInRange(range, withString: "!!!")
// 查找所有匹配并替换/过滤
str.stringByReplacingOccurrencesOfString("???", withString: "~")
str.stringByReplacingOccurrencesOfString(" ", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
// 过滤字符集合(分割后合并)
let arr = str.componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString:"-<>"))
arr.joinWithSeparator("")
合并/拼接
s1 + s2 + s3
str.appendContentsOf("123")
str.stringByAppendingString("000") //不改变原值!
str.stringByAppendingFormat("- num %d ", 100) //不改变原值!
// 以固定字符串为分隔符拼接
[str, str, str].joinWithSeparator("\n")
插入
str.insert(" ", atIndex: offset)
str.insertContentsOf(" hello".characters, at: offset)
str.replaceRange(Range( start:offset, end: offset ), with: "???OK!!!")
判断前缀或后缀
str.hasPrefix("01")
str.hasSuffix("567")
比较字符串
s1.characters.elementsEqual(s2.characters)
str.characters.elementsEqual("01234567".characters)
s1 == s2
"111" < "222"
匹配字符串
str.rangeOfString("efg")
str.rangeOfString("efg", options: NSStringCompareOptions.CaseInsensitiveSearch, range: nil)
固定位置的部分替换
str.replaceRange(range, with: "test_for_replace")
str.stringByReplacingCharactersInRange(range, withString: "哈哈:smile:Tes\nt")
Swift2.0 中的String(二):基本操作的更多相关文章
- Swift2.0 中的String(三):类型转换
本系列第三篇,String相关的类型转换.其他的几篇传送门(GitHub打不开链接的同学请自行把地址github改成gitcafe,或者直接去归档里找:-P): Swift2.0 中的String(一 ...
- Swift2.0 中的String(一):常用属性
字符串算是平常用的比较多.花样也比较多的一个类型,昨天有空把相关的一些常用操作都写了一遍,总结出来.其实iOS里面的字符串更复杂,还有NSString系列等等,那些API太多将来需要用的时候再慢慢学. ...
- List转String数组 collection.toArray(new String[0])中new String[0]的语法解释
Collection的公有方法中,toArray()是比较重要的一个. 但是使用无参数的toArray()有一个缺点,就是转换后的数组类型是Object[]. 虽然Object数组也不是不能用,但当你 ...
- collection.toArray(new String[0])中new String[0]的作用
new string[0]的作用 比如:String[] result = set.toArray(new String[0]); Collection的公有方法中,toArray()是比较重要的一个 ...
- Swift2.0语言教程之Swift2.0语言中的标准函数
Swift2.0语言教程之Swift2.0语言中的标准函数 Swift2.0中的标准函数 函数除了可以根据参数列表的有无分为无参函数和有参函数,还可以从定义角度分为用户自定义函数和标准函数两种.以上的 ...
- (IOS)Swift2.0 Radio 程序分析
本文主要分享下楼主在学习Swift编程过程中,对GitHub上的一个开源项目Swift Radio的研究心得. 项目地址:https://github.com/swiftcodex/Swift-Rad ...
- [Swift2.0系列]Defer/Guard 基础语法
1.Defer Swift2.0中加入了defer新语法声明.defer译为延缓.推迟之意.那么在Swift2.0中它将被应用于什么位置呢?比如,读取某目录下的文件内容并处理数据,你需要首先定位到文件 ...
- Swift2.0语言教程之函数的返回值与函数类型
Swift2.0语言教程之函数的返回值与函数类型 Swift2.0中函数的返回值 根据是否具有返回值,函数可以分为无返回值函数和有返回值函数.以下将会对这两种函数类型进行讲解. Swift2.0中具有 ...
- Swift2.0 UITextView 和 UITextFile 的使用
在Swift2.0中,UITextFile 和 UITextView 的使用总体上和在OC中是一样的,今天只是给大家一段代码,然后说UITextView里面的光标位置的问题.先看他们使用的简单的代码 ...
随机推荐
- leetcode:ZigZag Conversion 曲线转换
Question: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of ...
- 反汇编一个简单的C程序
一.实验截图 二.汇编代码分析: cpu首先执行main函数里的pushl %ebp和movl %esp %ebp.如下图: esp减去4就是向上移动4位到1,如下图: 把1赋值给esp,如下图: c ...
- 初识-----基于Socket的UDP和TCP编程及测试代码
一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流 ...
- Tcl之group arguments
1 doubel quotes This allows substitutions to occur within the quotations - or "interpolation&qu ...
- .gitignore 文件列表
GitHub 有一个十分详细的针对数十种项目及语言的 .gitignore 文件列表,你可以在https://github.com/github/gitignore 找到它.
- Ubuntu关闭图形界面
方法一 sudo /etc/init.d/lightdm stop 方法二 init 3 关闭图形界面 init 5 开启图形界面
- 开始使用Ambari吧
最开始接触Hadoop是研究生入学后,帮师姐装装集群什么的.过程很繁琐,很重复,很是让人抓狂.当时装一个三台机器的集群需要两天左右,这还是装的很熟练的时间花费,刚入手的时候简直是惨不忍睹,三台机器装了 ...
- cocos2d-js取不到cocostudio里面控件问题
var winSize = cc.director.getWinSize(); //add main node var mainNode = cc.Node.create(); ; mainNode. ...
- Make the “Check out” function available in the office document opened with Document ID link
I found a solution to make the “Check out” function available in the office document opened with Doc ...
- Xtrabackup之innobackupex备份恢复详解(转)
add by zhj:对于Xtrabackup2.2来说,已经解决了本文结尾提到的那个bug,当使用--copy-back时,同时加--force-non-empty-directories 即可.这 ...