2.Swift 基本语法解析 之 字符串

在 Swift 中绝大多数的情况下,推荐使用 String 类型

String 是一个结构体,性能更高

  • String 目前具有了绝大多数 NSString 的功能
  • String 支持直接遍历

NSString 是一个 OC 对象,性能略差

Swift 提供了 String 和 NSString 之间的无缝转换

字符串演练

1.遍历字符串中的字符

for s in str.characters {
    print(s)
}

2.字符串长度

// 返回以字节为单位的字符串长度,一个中文占 3 个字节
let len1 = str.lengthOfBytesUsingEncoding(NSUTF8StringEncoding)
// 返回实际字符的个数
let len2 = str.characters.count
// 返回 utf8 编码长度
let len3 = str.utf8.count

3.字符串拼接

  • 直接在 "" 中使用 \(变量名) 的方式可以快速拼接字符串

let str1 = "Hello"
let str2 = "World"
let i = 32

str = "\(i) 个 " + str1 + " " + str2

 

//第二种

let num2 = "我叫\(str1)年龄\(str2)"

       

print("第二种\(num2)")

我和我的小伙伴再也不要考虑 stringWithFormat 了 :D

可选项的拼接

  • 如果变量是可选项,拼接的结果中会有 Optional
  • 为了应对强行解包存在的风险,苹果提供了 ?? 操作符
  • ?? 操作符用于检测可选项是否为 nil
    • 如果不是 nil,使用当前值
    • 如果是 nil,使用后面的值替代
let str1 = "Hello"
let str2 = "World"
let i: Int? = 32
str = "\(i ?? 0) 个 " + str1 + " " + str2

4.格式化字符串

  • 在实际开发中,如果需要指定字符串格式,可以使用 String(format:...) 的方式
let h = 8
let m = 23
let s = 9
//以数组的形式
let timeString = String(format: "%02d:%02d:%02d", arguments: [h, m, s])
//直接以变量名的方式
let timeStr = String(format: "%02d:%02d:%02d", h, m, s)

String & Range 的结合

  • 在 Swift 中,String 和 Range连用时,语法结构比较复杂
  • 如果不习惯 Swift 的语法,可以将字符串转换成 NSString 再处理

let helloString = "我们一起飞"

(helloString as NSString).substringWithRange(NSMakeRange(2, 3))
//这个实现了String 与 oc 中的 NSString  无缝连接

 

//两种截取的字符串


//方法一:截取一定范围内的字符串 
let result = (str as NSString).substringWithRange(NSRange.init(location: 2, length: 2))
//方法二
let result5 = (str as NSString).substringWithRange(NSMakeRange(2, 4))
  • 使用 Range 的写法

//这个表示从最前面开始
let startIndex = helloString.startIndex.advancedBy(0)
//这个表示从最后一个向前走一位
let endIndex = helloString.endIndex.advancedBy(-1)
//这个表示范围
helloString.substringWithRange(startIndex..<endIndex)

 

转载于:https://my.oschina.net/kukele/blog/698717

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值