String
来源:互联网 发布:数据透视表总计 编辑:程序博客网 时间:2024/06/07 05:28
字符串
在 Swift 中绝大多数的情况下,推荐使用
String
类型
- String 是一个结构体,性能更高
- String 目前具有了绝大多数 NSString 的功能
- String 支持直接遍历
- NSString 是一个 OC 对象,性能略差
- Swift 提供了 String 和 NSString 之间的无缝转换
字符串演练
- 遍历字符串中的字符
for s in str.characters { print(s)}
- 字符串长度
// 返回以字节为单位的字符串长度,一个中文占 3 个字节let len1 = str.lengthOfBytesUsingEncoding(NSUTF8StringEncoding)// 返回实际字符的个数let len2 = str.characters.count// 返回 utf8 编码长度let len3 = str.utf8.count
- 字符串拼接
- 直接在 “” 中使用
\(变量名)
的方式可以快速拼接字符串
- 直接在 “” 中使用
let str1 = "Hello"let str2 = "World"let i = 32str = "\(i) 个 " + str1 + " " + str2
我和我的小伙伴再也不要考虑
stringWithFormat
了 :D
- 可选项的拼接
- 如果变量是可选项,拼接的结果中会有
Optional
- 为了应对强行解包存在的风险,苹果提供了
??
操作符 ??
操作符用于检测可选项是否为nil
- 如果不是
nil
,使用当前值 - 如果是
nil
,使用后面的值替代
- 如果不是
- 如果变量是可选项,拼接的结果中会有
let str1 = "Hello"let str2 = "World"let i: Int? = 32str = "\(i ?? 0) 个 " + str1 + " " + str2
- 格式化字符串
- 在实际开发中,如果需要指定字符串格式,可以使用
String(format:...)
的方式
- 在实际开发中,如果需要指定字符串格式,可以使用
let h = 8let m = 23let s = 9let timeString = String(format: "%02d:%02d:%02d", arguments: [h, m, s])
注意:后面的参数需要放在一个数组中
String & Range 的结合
- 在 Swift 中,
String
和Range
连用时,语法结构比较复杂 - 如果不习惯 Swift 的语法,可以将字符串转换成
NSString
再处理
let helloString = "我们一起飞"(helloString as NSString).substringWithRange(NSMakeRange(2, 3))
了解 Range
- 定义 Range
let badRange = 2...4
利用
Option + Click
可以发现 badRange 的类型时Range<Int>
- 以下代码会报错,因为需要的参数类型是
Range<Index>
helloString.substringWithRange(badRange)
- 使用
advance
函数能够定义Range<Index>
let range = advance(helloString.startIndex, 0)...advance(helloString.endIndex, -1)
- 使用
range
截取字串
helloString.substringWithRange(range)//: 有了 Range 之后,就可以使用以下方式简写helloString[range]
- 获取制定位置的字符
//: 有了 Range 之后,就可以使用以下方式简写helloString[range]//: 截取第一个字符helloString[range.startIndex]//: 截取任意制定位置字符helloString[advance(helloString.startIndex, 3)]
0 0
- string
- String
- String
- string
- string
- String
- string
- String
- string
- string
- string
- string
- String
- String
- string
- string +
- String
- String
- LeetCode Binary Tree Inorder Traversal
- 一个jsp站的用户密码解密
- 三种主流web服务实现
- control_flow
- loop
- String
- 07-collection
- 08-func
- 【HDU2112】一道很猥琐的最短路水题。。
- 09-closure
- 【小熊刷题】Merge K Sorted Linked Lists
- hdu 5381 The sum of gcd (线段树x树状数组x区间和维护进阶x离线处理)
- 10-init_func
- 11-lazy