美文网首页
iOS开发 -- Swift之字符串(四)

iOS开发 -- Swift之字符串(四)

作者: Sorphiean | 来源:发表于2016-09-07 15:15 被阅读0次

    字符串

    • 声明字符串的两种方式:
    var str:String = "Hello, playground"
    let str2 = String("Hello, playground")
    
    • 空字符串:
    var emptyString = ""
    var emptyString2 = String()
    
    //判断一个字符串是否为空
    emptyString.isEmpty
    
    • 拼接字符串
    str + mark          //不改变原字符串
    str += mark         //改变原字符串
    
    

    Character和Unicode

    • 遍历字符串中的每个字符
    //这里的c是 Character 类型
    for c in str.characters {
        print(c)
    }
    
    • 声明一个 Character 类型的变量
    let mark1 = "!"                 //这里mark是String类型
    let mark2:Character = "!"
    
    

    注意:Swift里面字符也是用双引号表示的,区分字符和字符串的关键是要显示的声明类型。

    • 字符串与字符的拼接
    mark1 + String(mark2)           //需要强制转换
    或者
    mark1.append(mark2)
    

    Swift语言中字符串的优势

    • Swift中无论字符还是字符串都是基于Unicode码的
    let englishLetter:Character = "a"
    let chineseLetter:Character = "安"
    let dog:Character = "🐶"
    let coolGuy:Character = "\u{1F60E}"
    //这样Swift在判断字符串的时候会更加精准
    
    var cafe = "café"
    var cafe2 = "cafe\u{0301
    cafe == cafe2
    cafe.characters.count == cafe2.characters.count
    
    let s4 = "🐶🐶🐶"
    let s5:NSString = "🐶🐶🐶"
    s4.characters.count                     //3
    s5.length                               //6
    

    String.Index和Range

    • 由于Swift的字符串是基于Unicode的,所以不能通过方括号的方式去取字符串里的字符。
    //以下两种方式都是错误的
    str[0]
    str.characters[0]
    
    • Swift为我们提供了一个新的类型专门用于字符串的索引:String.Index:
    var str: String = "Hello, playground"
    
    let startIndex = str.startIndex
    startIndex              //这里的startIndex是Index类型
    str[startIndex]
    str[startIndex.advancedBy(5)]
    
    str[spaceIndex.predecessor()]       //当前索引的前一个索引
    str[spaceIndex.successor()]         //当前索引的后一个索引
    
    let endIndex = str.endIndex         //这里的最后一个索引是字符串最后一个字符的下一个位置
    //[startIndex , endIndex)   这是一个前闭后开的区间
    str[endIndex.predecessor()]
    
    
    • 可以使用区间运算符放在两个索引之间
    str[startIndex..<spaceIndex]
    let range = startIndex..<spaceIndex         //这里产生一个新类型,range
    
    str.replaceRange(range, with: "Hi")
    str.removeRange(str.endIndex.advancedBy(-2)..<str.endIndex)
    
    

    as 和 NSString

    • String和NSString类型转换:
    var s2: String = NSString(format: "123") as String 
    
    var s3 = "123" as NSString
    
    • as充当的是结构体或者类的强制类型转换,后续会做详细介绍。

    • 如果所处理的字符串有大量的中文或者表情,用String是很方便的。如果处理英文,NSString很方便。

    • 去掉字符串中的冗余信息

    let s6 = "   ---Hello--  " as NSString
    s6.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString:" -"))
    
    

    相关文章

      网友评论

          本文标题:iOS开发 -- Swift之字符串(四)

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