swift 5
Swift中字符串是由 Unicode 组成,但是不能把 Unicode组成的字符串的子串看做 Unicode 字符,而是把它们拆分成 Unicode 字素。我们不能像数组中那样使用整数作为下标索引,因为会遇到有的字素是由多个字符组成的情况,这样会把一个完整语义的字素拆成两个字符,从而改变了原意。
出自 陈刚 <Swift开发手册 技巧与实战>
所以 Swift 中 String 用另一个类型 String.Index 来索引
下面介绍下 Swift 中 String 的最基本用法
1、查找元素在子串中的索引
var num = "123.456"
let index = num.firstIndex(of: ".")
结果1
从运行结果我们可以看出String.Index并非 Int 类型,无法简单的使用
+1
、-1
来获取邻近索引
2、截取字符串
var num = "123.456"
if let index = num.firstIndex(of: ".") {
let num1 = num[num.startIndex..<index]
}
结果2
截取字符串需要借助索引
3、索引偏移
var num = "123.456"
if let index = num.firstIndex(of: ".") {
let num1 = num[num.startIndex..<index]
//索引偏移【向右偏移一位】
let index1 = num.index(index, offsetBy: 1)
let num2 = num[index1..<num.endIndex]
}
结果3
4、子串替换
var num = "123.456"
if let index = num.firstIndex(of: ".") {
let num1 = num[num.startIndex..<index]
let index1 = num.index(index, offsetBy: 1)
let num2 = num[index1..<num.endIndex]
num
num.replaceSubrange(index1..<num.endIndex, with: "789")
num
}
结果4
5、强制类型转换
var num = "123.456"
let intNum = Int(num)
let doubleNum = Double(num)
let floatNum = Float(num)
let boolNum = Bool(num)
var num1 = "123"
let intNum1 = Int(num1)
var num2 = "true"
let boolNum2 = Bool(num2)
结果5
Swift 中String的基础用法就这些,日常开发应该够用了。
网友评论