在oc语言中,NSString来申明一个字符串。
在swift语言中,用String来申明一个字符串,学习过java的也应该知道。
字符(character)
在这里,需要说明一点的就是,字符串中有字符(Character)这个概念,一串字符串是由多个字符组成。
let str = "Hello" 这个字符串就是由"H","e","l","l","o"5个字符构成的字符串。
获取字符串的长度的方法
str.characters.count
不能通过索引来获取某一个字符
str[0] 或者str.characters[0] 这样的写法是错误的。
索引(Index)
那么,要如何去获取某一个字符。在这里,有个概念,要想获取一个字符,那么要先获取索引(Index),然后再通过索引获取字符
let startIndex = str.startIndex //获取第一个索引。类型为Index
let endIndex = str.endIndex //获取最后一个索引
let Index = startIndex.advancedBy(5) //获取从0开始,第5个索引位置
let Index2 = Index.predecessor() //获取当前索引前一个索引
let Index3 = Index.successor() //获取当前索引后一个索引
值得一提的就是,获取的索引注意是否越界。
字符串增删改查操作
增
str.appendContentsOf("!!!") //在字符串最后添加字符串
str.insert("?", atIndex: str.startIndex) //给定字符串一个索引位置,就可以添加一个字符到这个索引位置上。注意:只能添加一个字符
删
str.removeAtIndex(str
str.removeAtIndex(str.endIndex.predecessor()) //删除给定的索引的字符(只能删除一个字符)
str.removeRange(str.endIndex.advancedBy(-2)..<str.endIndex) //通过区间方法,可以同时删除区间所在的所有字符
str.removeAll() //删除所有字符
改
let range = startIndex..<spaceIndex.predecessor()
str.replaceRange(range, with: "Hi") //通过这样的方法,使得range这段字符被“Hi”给替换掉
查
let a = str[str.startIndex] //获取第一个字符
let b = str[str.endIndex] //获取最后一个字符
let c = str[str.startIndex.advancedBy(5)] //获取第5个字符
let d = str[str.startIndex.advancedBy(5).predecessor()] //获取第4个字符
let f = str[str.startIndex.advancedBy(5).successor()] //获取第6个字符
Character(字符)和Unicode
str.characters //字符串所有字符
如果let mark = "!" 申明,系统默认将mark作为字符串类型处理,其实这个mark严格来说是个字符。
字符串之间的可以通过“+”来进行字符串的合并
//在swift语言中,下列这些字符都是当作一个Character字符
let englishLetter:Character = "a"
let chineseLetter:Character = "雷"
let smile:Character = "😆"
let coolGuy:Character = "\u{1F60E}"//Unicode码
在swift中,可以更精确的来判断字符串长度,不会受中文,Unicode影响,相比于OC的NSString来说,显得更加实用。
字符串的一些操作
//uppercaseString,字符串全部转成大写
str.uppercaseString
//lowercaseString,字符串全部转成小写
str.lowercaseString
//capitalizedString,每一句字符串首字母转成大写
str.capitalizedString
//containsString,判断传入的字符串是否被str包含
str.containsString("Hello")
//hasPrefix,判断传入的字符串是否含有str的前缀
str.hasPrefix("Hello")
//hasSuffix,判断传入的字符串是否含有str的后缀
str.hasSuffix("ft")
字符串的缺点:
let s = "one third is \(1.0/3.0)" 这段代码就是算出1/3,结果的浮点数没法去指定保留小数点后几位。
所以,引进了as这个关键字,用来强制类型转化。
as
我们可以利用NSString的方法来处理小数点问题,然后再强转成String类型
let s2 = NSString(format: "one third is %.2f", 1.0/3.0) as String
NSString
总结:String字符串需要注意的就是获取字符(Character)需要通过索引(Index),在String不好处理的一些逻辑,可以通过NSString来处理再as强转,