Swift 5.x String常用api

优质
小牛编辑
136浏览
2023-12-01

Swift 5.x String 常用api


1. 遍历字符串获取每个字符

  • for-in循环遍历String中的每一个独立的Character
for character in "Dog!" {
    print(character)
}

输出结果:

D
o
g
!

2. 字符串拼接


  • 2.1 使用加运算符(+)创建新字符串
let hello = "hello"
let world = "world"
let helloWorld = hello + " " + world
print(helloWorld)

输出结果:

hello world

  • 2.2 使用加赋值符号(+=)在已存在String值末尾追加一个String
var hello = "hello"
let world = "world"
hello += world
print(hello)

输出结果:

helloworld

  • 2.3 使用String类型的append()方法来给一个String变量的末尾追加Character
var hello1 = "hello"
var hello2 = hello1
print("hello1:" + hello1)
print("hello2:" + hello2)
hello2.append("!")
print("hello1:" + hello1)
print("hello2:" + hello2)

输出结果:

hello1:hello
hello2:hello
hello1:hello
hello2:hello!

3. 字符串插值

  • 3.1 字符串插值是一种从混合常量、变量、字面量和表达式的字符串字面量构造新String值的方法

  • 3.2 每一个插入到字符串字面量的元素都要被一对圆括号包裹, 然后使用反斜杠前缀: \(插入元素)

  • 3.3 类似于NSStringstringWithFormat方法, 但是更加简便, 更强大

e.g.

let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
print(message)

输出结果:

3 times 2.5 is 7.5

4. 字符串索引

  • startIndex String中第一个Character的位置
  • endIndex String最后一个字符后的位置
  • 使用index(before:)index(after:)方法来访问给定索引的前后
  • 要访问给定索引更远的索引, 可以使用index(_:offsetBy:)
  • 使用indices属性来访问字符串中每个字符的索引

注: 并不是字符串下标脚本的合法实际参数 注: 如果String为空, 则startIndex与endIndex相等 注: String.Index 相当于每个Character在字符串中的位置

e.g.

var str = "Hello world!"
print("第一个元素: \(str[str.startIndex])")
print("最后一个元素: \(str[str.index(before: str.endIndex)])")
print("索引6的元素: \(str[str.index(str.startIndex, offsetBy: 6)])")

输出结果:

第一个元素: H
最后一个元素: !
索引6的元素: w

5. 字符串插入

  • 插入字符, 使用insert(_:at:)方法
var welcome = "hello"
welcome.insert("!", at: welcome.endIndex)
print(welcome)

输出结果:

hello!
  • 插入另一个字符串的内容到特定的索引, 使用insert(contentsOf:at:)方法
var welcome = "hello"
welcome.insert(contentsOf: " world!", at: welcome.endIndex)
print(welcome)

输出结果:

hello world!

6. 字符串删除

  • 移除字符, 使用remove(at:)方法
var welcome = "welcome!"
welcome.remove(at: welcome.index(before: welcome.endIndex))
print(welcome)

输出结果:

welcome
  • 移除一小段特定范围的字符串, 使用removeSubrange(_:)方法
var welcome = "welcome!"
let startIndex = welcome.index(welcome.startIndex, offsetBy: 2)
let endIndex = welcome.index(before: welcome.endIndex)
welcome.removeSubrange(startIndex...endIndex)
print(welcome)

输出结果:

we

7. 字符串子串

  • 使用下表或者类似prefix(_:)方法得到的子字符串是Substring类型
  • Substring拥有String的大部分方法
  • Substring可以转成String类型
var helloWorld = "Hello, world!"
let index = helloWorld.firstIndex(of: ",") ?? helloWorld.endIndex
let prefix = helloWorld[..<index]
let subfix = helloWorld[index...helloWorld.index(before: helloWorld.endIndex)]
print(prefix)
print(subfix)

输出结果:

Hello
, world!

8. 字符串比较

  • 字符串和字符串相等性 ==!=
  • 前缀相当性 hasPrefix(_:)
  • 后缀相等性 hasSuffix(_:)
var helloWorld = "Hello, world!"
print(helloWorld.hasPrefix("Hello"))
print(helloWorld.hasSuffix("world!"))

输出结果:

true
true