美文网首页swift专题从0到1学习Swift
Swift5 String Array Dictionary

Swift5 String Array Dictionary

作者: 一粒咸瓜子 | 来源:发表于2020-09-12 19:33 被阅读0次

    字符串

    基本属性

    • String 是一个结构体,性能更高
      • NSString 是一个 OC 对象,性能略差
    • String 支持直接遍历
    • Swift 提供了 String 和 NSString 之间的无缝转换
      • let NStr = str as NSString

    空字符串:String()

    • 字节长度:let byteNum = str.lengthOfBytes(using: .utf8)
    • 字符个数:let length = str.count
    let str = "abc" + "一二三" + "😆"
    print(str.lengthOfBytes(using: .utf8))
    print(str.count)
    // Prints "16 7"
    

    合并

    • 纯字符串"+"
    • 不是 String 类型时:
      A.显示转换 String(s)
      B.字符串插值 \()
    let str1 = 20
    let str2 = "a" + String(str1)
    let str3 = "a" + "\(str1)"
    

    format

    let h = 9, m = 8, s = 20
    //参数可以多写,只是不接收,不会报错
    print(String(format: "%02d:%02d:%02d",h,m,s))
    // Prints: "09:08:20"
    

    substring

    方法一:as NSString

    let s3 = (s as NSString).substring(from: 2)
    

    方法二:由 index 取 string[aIndex..<bIndex] 或 prefix/suffix
    总结:

    /// substring from index
    /// - Parameters:
    ///   - from: from: from
    ///   - include: default is true
    /// - Returns: string
    func utils_substring(from: Int, include: Bool = true) -> String {
        if from >= count {
            return ""
        }
        let start = index(startIndex, offsetBy: from)
        let sub = include ? self[start...] : self[start...].dropFirst()
        //  let sub = suffix(from: start)
        return String(sub)
    }
    
    
    /// substring to index
    /// - Parameters:
    ///   - to: to
    ///   - include: default is false
    /// - Returns: string
    func utils_substring(to: Int, include: Bool = false) -> String {
        if to >= count {
            return self
        }
        let end = index(startIndex, offsetBy: to)
        let sub = include ? self[...end] : self[..<end]
        // let sub = prefix(upTo: end) // 开区间
        return String(sub)
    }
    
    
    /// substring from left index to right index
    /// - Parameters:
    ///   - left: left index
    ///   - right: right index
    /// - Returns: string
    func utils_substring(left: Int = 0, right: Int = 0) -> String {
        if left >= count || right >= count || left + right >= count {
            return ""
        }
        let start = index(startIndex, offsetBy: left)
        let end = index(endIndex, offsetBy: -right)
        let sub = self[start..<end]
        // let sub = suffix(from: start).prefix(upTo: end)
        
        return String(sub)
    }
    
    
    /// 匹配两边字符,取中间内容 (开区间)
    /// - Parameters:
    ///   - left: left
    ///   - right: right
    /// - Returns: string
    func utils_substring(left: String = "", right: String = "") -> String {
    
        let start = left == "" ? startIndex : (firstIndex(of: Character(left)) ?? startIndex)
        let end = right == "" ? endIndex : (lastIndex(of: Character(right)) ?? endIndex)
        
        var sub = self[start..<end]
        // var sub = suffix(from: start).prefix(upTo: end)
        
        if start != startIndex {
            sub = sub.dropFirst()
        }
        else if start == startIndex, left != "" {
            if contains(Character(left)) {
                sub = sub.dropFirst()
            }
        }
        return String(sub)
    }
    
    

    字符串遍历

    String 支持直接遍历

    for n in "abc" {
        print(n, terminator:" ")
    }
    // Print "a b c"
    

    数组

    数组内元素类型不一致需要手动标明 [Any],不可省略
    不推荐在数组中放入不同类型的元素。

    空数组:var emptyArray = [String]()
    初始化:var array = ["a", "b", "c”]
    增操作:array.append("e”)
    删操作:array.remove(at: 1)
    改操作: array[1] = "11"

    数组遍历

    for in

    • 详细信息:enumerated()(字典不需要加此方法)
    • 倒序:reversed()
    for a in array {
        print(a)
    }
    
    for (offset, element) in array.reversed().enumerated() {
        print(offset, element)
    }
    

    数组合并

    array1 + array2

    let array1 = ["a", "b", "c"]
    // 数组内元素类型不一致需要手动标明[Any],不可省略
    let array2: [Any] = ["a", "0", 20]  
    let array3 = array1 + array2
    

    字典

    value 类型不一致时需要手动标明字典类型 [String: Any]

    空字典:var emptydict = [String: Any]()
    初始化:var dict: [String: Any] = ["name": "小王", "age": 18]
    增操作:dict["title"] = "增加"
    删操作:dict.removeValue(forKey: "title")
    改操作:dict["title"] = "修改"

    字典遍历

    for in
    顺序是key, value,和命名无关

    for (key, value) in dict {
        print(key, value)
    }
    

    字典合并

    遍历元素少的字典,添加到另一个中

    var dict: [String: Any] = ["name": "zz", "age": 20]
    let dict1: [String: Any] = ["title1": "aaaaa1", "title2": "aaaaa2"]
    for (key, value) in dict1 {
        dict[key] = value
    }
    

    相关文章

      网友评论

        本文标题:Swift5 String Array Dictionary

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