Swift之字符串

2017-05-23  本文已影响54人  oh_flying

简单介绍一下swift的字符串的一些用法:
首先,swift不在使用NSString,二十直接使用String。
String是一个结构体,性能更高,可以直接遍历;
NSString是一个OC对象,性能略差。
看一下代码吧:

字符串的遍历

//MARK: -字符串的遍历
func demo() {
    //NSString不支持一下方式遍历
    let str: String = "我要飞得更高"
    
    for c in str.characters {
        print(c)
    }
}

字符串的长度

func demo1() {
    let str = "hello world你好"
    //1> 返回指定编码的对应字节数量
    //UTF8的编码(0~4个),每个汉字是3个字节
    print(str.lengthOfBytes(using: .utf8))
    
    //2> 字符串长度-返回字符的个数(推荐使用)
    print(str.characters.count)
    
    //3> 使用NSString中转
    //OC的写法(CZTableCell *)[tableView dequeue]
    //swift中可以使用‘值as类型’类型转换
    let ocStr = str as NSString
    print(ocStr.length)
    
}

字符串的拼接

// \(变量/常量)
// *** 拼接字符串需要注意可选项 optional
//NSStringFromCGPoint(point)
func demo2() {
    let name = "老王"
    let age = 18;
    let title:String? = "BOSS"
    let point = CGPoint(x: 100, y: 100)
    let str = "\(name)\(age)\(title ?? "") \(point)"
    print(str)
}

字符串格式化

 func demo3() {
    let h = 8
    let m = 9
    let s = 6
    let dateStr = "\(h):\(m):\(s)"
    print(dateStr)
    //使用格式字符串格式化
    let dateStr1 = String(format: "%02d:%02d:%02d", h,m,s)
    print(dateStr1)   
}

字符串的子串

func demo4() {
    //建议:一般使用NSString作为中转,因为swift取子串的方法一直在优化
    //更容易理解
    let str = "我们一起在飞"
    //1.NSString
    let ocStr = str as NSString
    let  s1 = ocStr.substring(with: NSMakeRange(2,3))
    print(s1)
    
    //String的3.0方法
    //偶尔使用很方便,但是复杂的截取不好理解,语法经常变化
    //let r = 0..<5
    //str.substirng(with: Range<Index)
    //Index
    //startindex position == 0
    print(str.startIndex)
    // endindex position == str.length
    print(str.endIndex)
    
   let str2 = str.substring(from: "我们".endIndex)
    print(str2)
    
    let str3 = str.substring(from: "abc".endIndex)
    print(str3)
    
    //取范围子字符串的范围
    guard let range = str.range(of: "一起") else {
        print("没有找到字符串")
        return
    }
    
    print(str.substring(with:range))
    print(range)
    
}

总结

以上介绍了一些字符串的使用方法,也比较简单。

上一篇下一篇

猜你喜欢

热点阅读