Swift学习笔记3——String和Character
2015-09-26 18:15
295 查看
为啥String和Character要单独拿出来讲呢?因为和C区别蛮大的,而且经常用到。感觉Swift的String还是没有Java的String好用。比如截串就是个麻烦的事情。以后String可能还会更新,让String变得更加好用。
需要注意的是,Swift中的String是值传递。附上String 的定义就明白了。
开始就是创建字符串,最简单的方法如下
Character相比于C和java来讲有区别,如果要创建一个Character,必须显式声明类型
Character可以赋值为Unicode
改变String,这个语法和java一样的,不过内存管理层面已经是不同的对象了。
遍历String字符的两种方法
获取String长度的办法
String的Index,这个蛋疼啊!不像java里面的Index直接就是一个数字。String的Index是在不同的extension中定义的。
先来看获得String里面的某个字符的过程,蛋疼。直接上官方文档
得到Index的方法现在我只知道两个
想要获得其他的index只能用advancedBy等三个方法来间接获得。如果有遗漏,欢迎指正
所以想要截串的话,就要通过上面那些蛋疼的方法来获得index后截取
利用上面的方法截串例子
另外一种方法就是将String转换为NSString,然后调用NSString的截串方法
需要注意的是,Swift中的String是值传递。附上String 的定义就明白了。
public struct String { /// An empty `String`. public init() }
开始就是创建字符串,最简单的方法如下
var str = "I am a string" //创建空串的两种方法,二者是一样的 var emptyStr1 = "" var emptyStr2 = String()
Character相比于C和java来讲有区别,如果要创建一个Character,必须显式声明类型
var c1:Character = "c" //注意是双引号 var c2 = "c" //c2被认为是String类型 var c3 = 'c' //编译错误
Character可以赋值为Unicode
let eAcute: Character = "\u{E9}" // é
改变String,这个语法和java一样的,不过内存管理层面已经是不同的对象了。
var str:String = "first" var c1:Character = "c" //注意是双引号 var c2 = "c" //c2被认为是String类型 str += "sceond" //str变为firstsceond,此时的str和之前的str内存地址不同 str += c2 //str变为firstc,此时的str和之前的str内存地址不同 str.appendContentsOf("second") // 和使用+=是一样的 str.appendContentsOf(c2) //和使用+=是一样的 str.append(c1); //添加Character的方法
遍历String字符的两种方法
var str:String = "first" for c in str.characters { print(c) } for index in str.characters.indices { print(str[index]) }
获取String长度的办法
var s = "dfe" print(s.characters.count) //3
String的Index,这个蛋疼啊!不像java里面的Index直接就是一个数字。String的Index是在不同的extension中定义的。
先来看获得String里面的某个字符的过程,蛋疼。直接上官方文档
let greeting = "Guten Tag!" greeting[greeting.startIndex] // G greeting[greeting.endIndex.predecessor()] // ! greeting[greeting.startIndex.successor()] // u let index = greeting.startIndex.advancedBy(7) greeting[index] // a
得到Index的方法现在我只知道两个
str.startIndex //指向第一个字符 str.endIndex //这个指向的并不是String最后一个字符,而是最后一个字符的index+1
想要获得其他的index只能用advancedBy等三个方法来间接获得。如果有遗漏,欢迎指正
str.startIndex.successor() //后一个index str.endIndex.predecessor() //前一个index var inde = str.startIndex.advancedBy(1) //后一个index,输入负数的话向前。关于advancedBy这个方法,以前是advance这个方法,现在不能用了
所以想要截串的话,就要通过上面那些蛋疼的方法来获得index后截取
//截串的三个方法 str.substringWithRange(aRange: Range<Index>) str.substringFromIndex(index: Index) //包含fromIndex那个字符 str.substringToIndex(index: Index) //不包含toIndex那个字符
利用上面的方法截串例子
var str = "123456789" var range = Range<String.Index>(start:str.startIndex.advancedBy(1),end:str.endIndex.advancedBy(-4)) print(str.substringWithRange(range)) //输出 2345
另外一种方法就是将String转换为NSString,然后调用NSString的截串方法
var str = "123456789" var ns = (str as NSString).substringWithRange(NSMakeRange(1, 4)) print(ns) //输出 2345
相关文章推荐
- Swift - 创建并设置背景(SpriteKit游戏开发)
- Swift - 一步步教你使用SpriteKit创建开发游戏项目
- Swift - 本地消息的推送通知(附样例)
- Swift - 动态添加删除TableView的单元格(以及内部元件)
- Swift - 使用TableView的静态单元格进行页面布局
- Swift - 数组排序方法(附样例)
- Swift - 程序进入后台,以及应用终止时调用的方法
- Swift - 列表项尾部附件点击响应(感叹号,箭头等)
- Swift - 纯代码实现页面segue跳转,以及参数传递
- Swift - 本地数据的保存与加载(使用NSCoder将对象保存到.plist文件)
- Swift - 文本输入框内容改变时响应,并获取最新内容
- Swift - 创建代理协议实现页面间参数传递和方法调用
- Swift - 使用storyboard创建表格视图(TableViewController)
- Swift - 歌曲播放样例(附带播放时间和播放进度)
- Swift - 给表格添加Cell的显示动画(3D缩放)
- Swift - 异步加载图片
- Swift学习笔记2——基本类型和基本运算
- Swift学习笔记番外篇1——桥接C源文件,实现控制台输入
- Swift学习笔记1——入门
- 【iOS】Swift扩展extension和协议protocol