美文网首页
swift-字符串

swift-字符串

作者: 雷晏 | 来源:发表于2016-09-09 11:09 被阅读78次

    在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强转,


    相关文章

      网友评论

          本文标题:swift-字符串

          本文链接:https://www.haomeiwen.com/subject/pyeeettx.html