Swift String 常用方法

字符串基础操作

创建字符串的多种方式:

let str1 = "Hello"          
let str2 = String(repeating: "a", count: 3) // "aaa"
let str3 = String(describing: 123) // "123"

字符串拼接方法:

let combined = str1 + " " + "Swift"  // "Hello Swift"
let appended = str1.appending("!")   // "Hello!"
let interpolated = "\(str1), Swift!" // "Hello, Swift!"

获取字符串长度:

let count = str1.count // 5
let utf8Count = str1.utf8.count // 字节数
字符串查询与访问

字符访问方式:

let firstChar = str1.first!          
let lastChar = str1.last!            
let charAtIndex = str1[str1.index(str1.startIndex, offsetBy: 1)] // "e"

子字符串检查:

str1.contains("ell")       // true
str1.hasPrefix("He")       // true
str1.hasSuffix("llo")      // true
字符串分割与组合

分割字符串方法:

let parts = "a,b,c".components(separatedBy: ",") // ["a", "b", "c"]
let lines = "line1\nline2".split(separator: "\n") // ["line1", "line2"]

合并字符串数组:

let joined = ["a", "b"].joined(separator: "-") // "a-b"
字符串修改

大小写转换:

let upper = str1.uppercased() // "HELLO"
let lower = str1.lowercased() // "hello"

去除空白字符:

let trimmed = " hello ".trimmingCharacters(in: .whitespaces) // "hello"

替换子串:

let replaced = str1.replacingOccurrences(of: "ell", with: "ipp") // "Hippo"
字符串遍历

字符遍历:

for char in str1 {
    print(char)
}

带索引的遍历:

str1.enumerated().forEach { index, char in
    print("\(index): \(char)")
}
字符串与集合转换

字符串转字符数组:

let charArray = Array(str1) // ["H", "e", "l", "l", "o"]

字符数组转字符串:

let newStr = String(charArray) // "Hello"
字符串编码

Unicode 标量访问:

for scalar in str1.unicodeScalars {
    print(scalar.value)
}

编码转换:

let utf8Bytes = str1.utf8.map { $0 } // [72, 101, 108, 108, 111]
let utf16Codes = str1.utf16.map { $0 } 
字符串格式化

数字格式化:

let formatted = String(format: "%.2f", 3.1415926) // "3.14"
let padded = String(format: "%05d", 42)          // "00042"
正则表达式

iOS 16+ 正则支持:

if #available(iOS 16, *) {
    let str = "123abc"
    let matches = str.matches(of: /\d+/) 
    for match in matches {
        print(match.0) // "123"
    }
}
性能提示

处理大字符串时使用 Substring:

let substring = str1[...] // 共享原字符串内存

避免频繁拼接:

var builder = ""
(1...100).forEach { builder.append("\($0)") }

更多推荐