Swift开发ios开发

Swift基础-02

2017-05-07  本文已影响13人  思考的快与慢
1.Swift中switch基本用法
   /// 1.switch 可以对任意类型的值进行分支,不在局限于整数
   /// 2.switdh 一般不需要break
   /// 3. switch 如果需要多值,使用“ ,”
   /// 4.所有的分支至少需要一条指令,如果什么都不干,才使用break结束 

   func demo(num: String)  {
       switch num {
       case "10", "9": // switch 如果需要多值,使用“ ,”
           print("优秀");
       case "8":  // 所有的分支至少需要一条指令,如果什么都不干,才使用break结束 
           break
       default:
           print("一般")
       }
   }

关于 switch的特殊用法

  func demo2() {
        
        let point = CGPoint(x: 10, y: 10)
        switch point {
        case let p where p.x == 0 && p.y == 0:
           print("原点")
        case let p where p.x == 0:
            print("Y轴")
        case let p where p.y == 0:
            print("X轴")
        case let p where abs(p.x) == abs(p.y):
            print("对角线")
        default:
            print("其他")
        }
    }

2.Swift中区间 CountableRange 和 CountableClosedRange
    func demo3() {
        
        for i in 0..<5 {
            print(i)
        }
        print("------------")

        for i in 0...5 {
            print(i)
        }
        print("------------")

        // CountableRange<Int>
        let r1 = 0..<5 // 注意这个地方的写法 0..<5 之间没有空格
        print(r1)
        
        //  CountableClosedRange<Int> 
        let r2 = 0...5 // // 注意这个地方的写法 0...5 之间没有空格
        print(r2)
    }
3. String的基本使用
 func demo() {
        let  str = "洋葱数学";
        for char in str.characters {
            print(char)
        }
    }
    // 在返回制定编码的对应的字节数量
    // UTF-8的编码,每个汉字对应3个字节
    func demo3() {
        
        let str = "洋葱数学hello"
        print(str.lengthOfBytes(using: .utf8)) // 17
        
        // 字符串长度
        // 这种写法是推荐使用的
        print(str.characters.count) // 9
        
        // 使用NSString中转
       //  str as NSString
        let ocStr = str as NSString
        print(ocStr.length) // 9
    }
    func demo4() {
        let name = "老王";
        let age = 18
        let title: String? = "CEO"
        let point = CGPoint(x: 100, y: 100)
        
        let str = "\(name) \(age) \(title ?? "") \(point)"
        
        print(name + String(age) + (title ?? ""))
        print(str)
    }
    func demo5() {
        let h = 8;
        let m = 10;
        let s  = 20;
        
        let dateStr = "\(h):\(m):\(s)"
        print(dateStr)
        
        // 格式化字符串
        let dateStr2 = String(format:"%02d:%2d:%2d", h,m,s);
        print(dateStr2)
    }
 func demo6() {
        
        // 取子串 建议使用 NSString作为中转,因为Swift去子串的方法一直在优化
        // 很容易理解
        let str = "洋葱数学"
        let ocStr = str as NSString
        let str1 = ocStr.substring(with: NSMakeRange(2, 2))
        print(str1)
        
        // String的方法
        // let r = 0..<5
        // str.substring(with: <#T##Range<String.Index>#>)
        // str.startIndex == 0
        print(str.startIndex); // Index(_base: Swift.String.UnicodeScalarView.Index(_position: 0), _countUTF16: 1)
        
        // str.endIndex == 4
        print(str.endIndex); // Index(_base: Swift.String.UnicodeScalarView.Index(_position: 4), _countUTF16: 0)
        
        let str2 = str.substring(from: "样".endIndex); // 表示从第一个位置开始获取
        print(str2) // 葱数学
        
        let str3 = str.substring(from: "样洋葱".endIndex); // 表示从第三个位置开始获取
        print(str3) // 学
        
        print("-------------")
        guard let range = str.range(of: "数学") else {
            print("没有找到子串")
            return
        }
        print(range) // Index(_base: Swift.String.UnicodeScalarView.Index(_position: 2), _countUTF16: 1)..<Index(_base: Swift.String.UnicodeScalarView.Index(_position: 4), _countUTF16: 0)
        print(str.substring(with: range)) //数学
    }
上一篇下一篇

猜你喜欢

热点阅读