swift 4.0学习之:字符串

字符串

OC中的字符串是一个对象,继承于NSObject,但是Swift中的字符串是一个结构体,因此Swift中的字符串性能比OC中要高,实际应用举例如下:

var str1 = "zyt"
var str2 = "ssg"
//单纯拼接两个字符串直接加就可以
str1 += str2
//如果两个字符串类型不一致的时候,可以用\()来拼接,如下
let age = 25
let name = "zyt"
//目标 name = zyt ,age = 25
var str = "name = \(name) , age = \(age)"
//如果想要实现例如时间这种显示传入4显示04     04:03:25
var time = String.init(format: "%02d:%02d:%02d", 4,3,25)

字符串的处理必然要提起截取字符串,这在字符串的处理中属于比较常用的,但是Swift在处理截取字符串的时候没有一个很方便的系统api可以调用,所以目前来说,处理截取字符串大体有两种方式

首先第一种:通过转换成OC中的NSString来执行,举例如下:

var aaaa:NSString = "aljdflkasjflkas"//通过定义字符串类型为NSString来调用sub方法,也可这么写:var aaaa = "asldfjalksjf" as NSString  效果一样
let nnn = aaaa.substring(with: NSMakeRange(0, 4))

第二种方式:虽然通过上面那种方式没什么问题,但是总觉得就截一个字符串每次要这么转来转去,感觉总归有点low,因为Swift没有系统封装好这样截取字符串的api,那就自己封装一个吧,代码如下:

//写一个String的类扩展
extension String {
    subscript(range: CountableClosedRange<Int>) -> Substring {//闭区间
        let sIndex = range.lowerBound
        var eIndex = range.upperBound
        if sIndex > (count - 1) {
            return ""
        }else if eIndex > (count - 1) {
            eIndex = count - 1
        }
        let start = index(startIndex, offsetBy: sIndex)
        let end   = index(startIndex, offsetBy: eIndex)
        return self[start...end]
    }
    subscript(range: CountableRange<Int>) -> Substring {//开区间
        let sIndex = range.lowerBound
        var eIndex = range.upperBound
        if sIndex > (count - 1) {
            return ""
        }else if eIndex > (count - 1) {
            eIndex = count
        }
        let start = index(startIndex, offsetBy: sIndex)
        let end   = index(startIndex, offsetBy: eIndex)
        return self[start..<end]
    }
}
//然后就直接可以调用了,直接传入下标从几到几就可以了
let aaa = "alksdjflkajsf"
aaa[0...3]
aaa[1..<33]
aaa[22...222]//上面的方法已经做处理了,各种情况都能保证不会crash
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值