学习swift(3) 字符串、数组、字典

一、字符串(String):

 swift中的String时结构体,OC中的NSString时类。

// 一个字符一个字符的取出来

        let str:String = "我要去飞了"

  // NSString 不支持下面的遍历。

        for c in str.characters

        {

            print(c)

        }

打印

 

/// 字符串的长度

    func demo1()

    {

        let str = "hello world你好"

        // 1> 返回指定编码的字节数量

        print("bytes=\(str.lengthOfBytes(using: .utf8))")

        

        // 2> 获取字符串长度(字符的个数)

        print("len=\(str.characters.count)")

        

        // 3> 使用NSString中专, as也是一种类型转换

        let ocStr = "hellow" as NSString

        print("len=\(ocStr.length)")

    }

打印:

bytes=17

len=13

len=6

 

    /// 字符串拼接

    // NSString 拼接采用stringWithFormat:**

    func demo2()

    {

        let name = "唐斌"

        let age = 40

        let title: String? = "BOSS"

        let point = CGPoint(x:100, y:200)

        // 拼接字符串需要注意,可选项Optional,可以使用“??”,title??"" 表示title为nil的话,就使用“”

        let str = "\(name) \(age) \(title ?? "") \(point))"

        print("str=\(str)")

    }

 打印:

str=唐斌 40 BOSS (100.0, 200.0))

 

/// 格式化

    func demo3()

    {

        let h = 8

        let m = 9

        let s = 6

        

        let dateStr = "\(h):\(m):\(s)"

        print("dateStr=\(dateStr)")

        // 格式字符串格式化

        let dateStr1 = String(format: "%02d:%02d:%02d", h, m, s)

        print("dateStr1=\(dateStr1)")

    }

打印:

dateStr=8:9:6

dateStr1=08:09:06

 

/// 取字符串

    func demo()

    {

        // 建议:一般使用NSString作为中转,因为Swift取子串的方法一直在优化。

        let str = "我们一起去飞"

        

        // 1. NSString

        let ocStr = str as NSString

        let s1 = ocStr.substring(with: NSMakeRange(2, 3))

        print("s1=\(s1)")

        

        // 2. String的3.0方法

//        str.substring(with: <#T##Range<String.Index>#>)

        // Index

        

        // 得到 “一起去飞”

        let s2 = str.substring(from: "我们".endIndex); // "我们"跟上面没有关系,只是用来计算长度

        print("s2=\(s2)")

 

  

        // 取子字符串的范围

        guard let range = str.range(of: "一起") else {

            print("没有找到字符串")

            return

        }

        // “一定”找到的范围

        print("range=\(range)")

        print("strrange=\(str.substring(with: range))")

 

    }

 打印:

s1=一起去

s2=一起去飞

range=Index(_base: Swift.String.UnicodeScalarView.Index(_position: 2), _countUTF16: 1)..<Index(_base: Swift.String.UnicodeScalarView.Index(_position: 4), _countUTF16: 1)

strrange=一起

 

 

 

 

二、数组(Array):

//MARK: - 数组的定义

    func demo()

    {

        // OC使用[]定义数组,Swift一样,但是没有‘@'

        // 自动推到的结果 [String] -> 标识数组中存放的时String

        // 跟 OC 中的数组指定的泛型类似

        let array = ["消防", "唐斌"]

        print("array=\(array)")

        

        // [Int] -> 标识存放的时Int

        // Swift 中基本数据类型不需要包装

        let array2 = [1, 2, 3, 4, 5]

        

        print("array2=\(array2)")

        

        // CG结构体

        let p = CGPoint(x: 10, y: 300)

        let array3 = [p]

        print("array3=\(array3)")

        

        // 混合数组

        // OC如果数组中的类型不一致,自动推到的结果[NSObject]

        // 在Swift中还有一种类型 [Any] -> 任意对象

        // 在Swift中一个类可以没有任何‘父类’

        // 在混合的数组中,CG结构体需要包装,调试结果包装部包装都是可以的

        // NSValue(cgPoint: p)

        //

        let array4 = ["张三", 3, p] as [Any]

        print("array4=\(array4)")

    }

打印:

array=["消防", "唐斌"]

array2=[1, 2, 3, 4, 5]

array3=[(10.0, 300.0)]

array4=["张三", 3, (10.0, 300.0)]

 

 

 

三、字典(Dictionary):

posted on 2017-02-21 09:05  TangBin604  阅读(107)  评论(0编辑  收藏  举报

导航