swift5.0 字符串截取

字符串索引

每一个 String 值都有一个关联的索引(index)类型,String.Index,它对应着字符串中的每一个 Character 的位置。

使用 startIndex 属性可以获取一个 String 的第一个 Character 的索引。使用 endIndex 属性可以获取最后一个 Character 的后一个位置的索引。因此,endIndex 属性不能作为一个字符串的有效下标。如果 String 是空串,startIndex 和 endIndex 是相等的。

通过调用 String 的 index(before:) 或 index(after:) 方法,可以立即得到前面或后面的一个索引。你还可以通过调用 index(_:offsetBy:) 方法来获取对应偏移量的索引

let welcome = "hello world"
print(welcome[welcome.startIndex])
// h
print(welcome[welcome.index(after: welcome.startIndex)])
// e
print(welcome[welcome.index(before: welcome.endIndex)])
// d
let someIndex = welcome.index(welcome.startIndex, offsetBy: 3)
print(welcome[someIndex])
// l
let anotherIndex = welcome.index(welcome.endIndex, offsetBy: -3)
print(welcome[anotherIndex])
// r

字符串的截取

Rang

A half-open interval from a lower bound up to, but not including, an upper bound.
从下界到上界的半开区间,但不包括上界(来自有道翻译)。

使用range(of: ) 可以根据给定的选项(条件)在给定的字符串范围内查找并返回给定选项(条件)第一次出现的范围。Range中包含两个属性lowerBound(下界)upperBound (上界)

示例

let someString = "今天你恰饭了吗"
// someRang的类型是 Range?
if let someRange = someString.range(of: "恰饭") { 
    print(someString[someRange])
    // 恰饭
    print(someString[someRange.lowerBound])
    // 恰
    print(someString[someRange.upperBound])
    // 了
}

从上面的示例中我们可以得出 lowerBound 类似我们给定条件的startIndex也就是“恰饭”的第一个索引,而upperBound类似我们给定条件的endIndex也就是“恰饭”最后一个 Character 的后一个位置的索引。

在空范围内,“下界”等于“上界”

下面是对微博来源字符串截取的一个示例:

let source = "榜姐的iPhone客户端"
let startRang = source.range(of: ">")!
let endRang = source.range(of: "
print(source[startRang.upperBound...])
//  榜姐的iPhone客户端
print(source[startRang.upperBound..

你可能感兴趣的:(swift5.0 字符串截取)