swift的一些基本属性6 (字符串)

本文介绍了Swift和Objective-C中字符串的使用方法,包括遍历、拼接、获取长度及子串提取等操作,并对比了两种语言中字符串类型的特性和效率。

-字符串

 Swift  String,是一个结构体,量级更轻,效率略高,推荐使用

            可以支持遍历

  OC      NSString,是继承自 NSObject 的对象

/// 遍历字符串
    func demo() {
        // String
        let string: String = "飞的更高"
        // 遍历字符串
        for c in string.characters {
            print(c)
        }
    }
}

 /// 字符串拼接

    func demo2() {

        let name = "zhangsan"

        let age = 18

        let point = self.view.center

        

        // 格式 "\(变量/常量名)"

        // 告别了 -> NSStringStringWithCGPoint

        print("\(name) ~~~ \(age) \(point)")

    }

/// 长度

    func demo3() {

        let name = "hello world你好世界"

        // 将字符串转换成对应编码 UTF8 字节的长度

        // 一个中文对应的 UTF8 编码占 3 个字节

        // UTF8 的字符,占用字节数为 1~4 个

        print(name.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))

        // 获得字符串中字符的个数

        print(name.characters.count)

        // as 是类型转换 => OC (CZDemoCell *)UITableViewCell

        let ocName = name as NSString

        print(ocName.length)

    }

/// 子串 - 方便的方法,转换成 NSString

    func demo5() {

        let str = "我们一起去飞"

        // 1. 方法1,使用 NSString

        let subStr1 = (str as NSString).substringWithRange(NSMakeRange(2, 4))

        print(subStr1)

  2. 方法2,Swift的语法

       startIndex 是字符串的起始索引位置 -> 0

       endIndex 是字符串的结束的索引位置 -> count

       advancedBy 是将索引递进的函数

       n > 0 向右递进 n 个字符

       n < 0 向左递进 n 个字符

let subStr2 = str.substringFromIndex(str.startIndex.advancedBy(2))

        print(subStr2)

        // can not increment endIndex,不允许递增 endIndex,会出现越界

        let subStr3 = str.substringToIndex(str.endIndex.advancedBy(-2))

        print(subStr3)

        // 从 Xcode 7 beta 5 开始就固定了格式了

        let startIndex = str.startIndex //.advancedBy(2)

        let endIndex = str.endIndex //.advancedBy(-2)

        print(startIndex)

        print(endIndex)

        // 提示如果 范围越界,会崩溃

        let subStr4 = str.substringWithRange(startIndex..<endIndex)

        print(subStr4)

    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值