美文网首页
Swift入门_字符串

Swift入门_字符串

作者: 明月钓无痕 | 来源:发表于2016-01-22 17:45 被阅读37次

    Swift中的字符串和OC的是可以无缝桥接的.其中的一些细节还是要说的.
    Swift中的字符串不像OC中的需要添加@前缀,而是直接使用双引号("").

    let someString = "aaa"
    let someString2: String = "aaa" 
    

    上面两种写法是一样的.编译器会自动推断类型.这点以后就不再提了.应该会习惯的.
    任何创建一个空的字符串呢?有两种方法:

    var emptyString = ""
    var emptyString2 = String()
    

    而且Swift提供了一个属性,可以很简单的判断字符串是否为空.

    if emptyString2.isEmpty {
        print("字符串为空")
    }
    

    字符串拼接
    Swift中的字符串拼接和java中的很像,可以直接进行加运算.因为在Swift中的+不在是加法运算.

    var str1 = "a"
    str1 += "b"
    // str1这时为"ab"
    
    
    

    需要注意的是常量字符串是不能进行加操作的,因为常量是不能修改的.

    遍历字符串

    for character in "Dog!🐶".characters {
        print(character)
    }
    

    ** 追加 **

    str1.appendContentsOf("dog")
    // 当然不如之间进行加方便
    
    

    使用索引访问

    var str = "dog"
    // 我们可以很轻松的根据下标来获取字符串中对应的字符
    // 最容易获取到的是start和end,要注意endIndex会出现下标越界的问题,对OC有经验的话,应该不难理解.
    let ch1 = str[str.characters.startIndex] // d
    let ch2 = str[str.characters.startIndex.successor()] // o
    // advancedBy()参数是正数则向后取,参数为负数则向前取
    let ch3 = str[str.characters.endIndex.advancedBy(-1)] //g
    

    ** 插入和删除 **

    str.insert("m", atIndex: str.characters.startIndex) // 插入字符 m
    str.insertContentsOf("MY".characters, at: str.characters.startIndex) // 插入字符串 MY
    
    str.removeAtIndex(str.characters.startIndex.advancedBy(2)) // 删除字符 m
    str.removeRange(str.characters.startIndex..<str.characters.startIndex.advancedBy(2)) // 删除范围
    
    

    ** 相等 **
    在OC中判断字符串是相同的我们会使用isEqual方法.在Swift中我们可以直接使用 == 或者 != 来判断字符串是否相同

    ** 前后缀 **

    str.hasPrefix("d") // 是否有前缀 d
    str.hasSuffix("g") // 是否有后缀 g
    
    

    ** 与NSString桥接 **
    有一些方法是OC特有的,在没有导入Foundation 或者UIKit之前,会报错.导入框架之后再能正常使用,这点需要注意

    let text = "0123456789"
    if let range = text.rangeOfString("5",
        options: .BackwardsSearch) {
        let suffix = String(text.characters.suffixFrom(range.endIndex))
    }
    

    相关文章

      网友评论

          本文标题:Swift入门_字符串

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