Đã cập nhật cho Swift 4
Kiểm tra chuỗi bắt đầu bằng và kết thúc bằng gì
Bạn có thể sử dụng các phương thức hasPrefix(_:)
và hasSuffix(_:)
để kiểm tra tính bình đẳng với một Chuỗi khác.
let str = "Hello, playground"
if str.hasPrefix("Hello") { // true
print("Prefix exists")
}
if str.hasSuffix("ground") { // true
print("Suffix exists")
}
Lấy tiền tố thực tế và chuỗi con hậu tố
Để nhận tiền tố hoặc chuỗi con hậu tố thực tế, bạn có thể sử dụng một trong các phương pháp sau. Tôi đề xuất phương pháp đầu tiên vì nó đơn giản. Tất cả các phương pháp sử dụng str
như
let str = "Hello, playground"
Phương pháp 1: (Khuyến nghị) prefix(Int)
vàsuffix(Int)
let prefix = String(str.prefix(5)) // Hello
let suffix = String(str.suffix(6)) // ground
Đây là phương pháp tốt hơn theo ý kiến của tôi. Không giống như các phương pháp 2 và 3 bên dưới, phương pháp này sẽ không sụp đổ nếu các chỉ mục đi ra ngoài giới hạn. Nó sẽ chỉ trả về tất cả các ký tự trong chuỗi.
let prefix = String(str.prefix(225)) // Hello, playground
let suffix = String(str.suffix(623)) // Hello, playground
Tất nhiên, đôi khi sự cố là tốt vì chúng cho bạn biết rằng có vấn đề với mã của bạn. Vì vậy, hãy xem xét phương pháp thứ hai bên dưới. Nó sẽ báo lỗi nếu chỉ mục đi ra ngoài giới hạn.
Phương pháp 2: prefix(upto:)
vàsuffix(from:)
Chỉ mục Swift String khá phức tạp vì chúng phải tính đến các ký tự đặc biệt (như biểu tượng cảm xúc). Tuy nhiên, một khi bạn nhận được chỉ mục, bạn sẽ dễ dàng nhận được tiền tố hoặc hậu tố. (Xem câu trả lời khác của tôi trên String.Index
.)
let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str.prefix(upTo: prefixIndex)) // Hello
let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str.suffix(from: suffixIndex)) // ground
Nếu bạn muốn đề phòng việc đi ra ngoài giới hạn, bạn có thể tạo chỉ mục bằng cách sử dụng limitedBy
(một lần nữa, hãy xem câu trả lời này ).
Phương pháp 3: đăng ký
Vì Chuỗi là một tập hợp, bạn có thể sử dụng các chỉ số phụ để lấy tiền tố và hậu tố.
let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str[..<prefixIndex]) // Hello
let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str[suffixIndex...]) // ground
Đọc thêm