12/08/2018, 16:10

Strings: Có gì mới trong Swift 4?

Swift 4 dựa trên những điểm mạnh của Swift 3, mang lại tính mạnh mẽ và ổn định cao hơn, cung cấp khả năng tương thích mã nguồn với Swift 3, cải tiến thư viện chuẩn và thêm các tính năng như lưu trữ và tuần tự hóa. Swift 4 mang đến những sự cải tiến và đơn giản trong cách sử dụng cho String . ...

Swift 4 dựa trên những điểm mạnh của Swift 3, mang lại tính mạnh mẽ và ổn định cao hơn, cung cấp khả năng tương thích mã nguồn với Swift 3, cải tiến thư viện chuẩn và thêm các tính năng như lưu trữ và tuần tự hóa. Swift 4 mang đến những sự cải tiến và đơn giản trong cách sử dụng cho String.

Như chúng ta đã biết thì từ khi ngôn ngữ Swift được nâng cấp lên phiên bản Swift 2.0 thì nó đã chấm dứt việc một String là tập hợp của các ký tự. Tuy nhiên, trong Swift 4 nó đã trở lại. Dưới đây là một số ví dụ trong việc thao tác với String giữa Swift 3 và Swift 4. Trong swift 3, để chạy một vòng lặp và in ra lần lượt các ký tự trong một String. Chúng ta sẽ thực hiện như sau:

var sentence = "My name is Peter"
for character in sentence.characters {
  print(character)
}

Còn trong Swift 4, chúng ta sẽ thực hiện tương tự với câu lệnh của Swift 3. Tuy nhiên, việc phải gọi sentence.characters là không còn cần thiết.

let sentence = "My name is Peter"
for character in sentence {
  print(character)
}

Tiếp theo là việc sử dụng thuộc tính count của String trong hai phiên bản Swift 3 và Swift 4. Tương tự như khi chạy vòng lặp ở trên, trong Swift 4, chúng ta cũng không cần phải gọi thêm thuộc tính characters .

// Swift 4
let text = "abcdefghiklmn"
text.count      

Còn đối với Swift 3

// Swift 3
let text = "abcdefghiklmn"
text.characters.count     

Một trong những thay đổi chính của strings trong Swift 4 chính là substrings. Khi bạn muốn cắt strings trong Swift 4, bạn sẽ không nhận lại một String mà sẽ nhận được một Substring. Một Substring sẽ có hầu hết các phương thức giống như String. Để cắt một chuỗi bắt đầu từ mội vị trí cho đến cuối:

let template = "<<<HelloWorld>>>"
let indexStartOfText = template.index(template.startIndex, offsetBy: 3)
let indexEndOfText = template.index(template.endIndex, offsetBy: -3)

// Swift 4
let substring1 = template[indexStartOfText...]  // "HelloWorld>>>"

// Swift 3 deprecated
// let substring1 = template.substring(from: indexStartOfText)

Để cắt một chuỗi bắt đầu từ vị trí đầu tiên cho đến một chỉ mục xác định:

// Swift 4
let substring2 = template[..<indexEndOfText]    // "<<<HelloWorld"

// Swift 3 deprecated
// let substring2 = template.substring(to: indexEndOfText)

Hay để lấy ra một phạm vi chỉ định trong chuỗi:

// Swift 4
let substring3 = template[indexStartOfText..<indexEndOfText] // "Hello"

// Swift 3 deprecated
// let substring3 = template.substring(with: indexStartOfText..<indexEndOfText)

Để chuyển từ Substring thành String thì thực hiện như sau:

let string1 = String(substring1)

Nên sử dụng subscripting hơn là dùng phương pháp tiền tố và hậu tố dài dòng.

let digits = "0123456789"
let index4 = digits.index(digits.startIndex, offsetBy: 4)

// The first of each of these examples is preferred
digits[...index4]              // "01234"
digits.prefix(through: index4)  

digits[..<index4]              // "0123"
digits.prefix(upTo: index4)     

digits[index4...]              // "456789"
digits.suffix(from: index4)

Swift hiện tại cho phép chúng ta tạo ra multi-line String bằng cách đóng gói string vào trong ba dấu ngoặc nháy ("""String""").

let verse = """
    To be, or not to be - that is the question;
    Whether 'tis nobler in the mind to suffer
    The slings and arrows of outrageous fortune,
    Or to take arms against a sea of troubles,
    """

Ngoài ra chúng ta cũng có thể sử dụng để xuống dòng khi chuỗi quá dài.

let singleLongLine = """
    This is a single long line split 
    over two lines by escaping the newline.
    """

https://useyourloaf.com/blog/updating-strings-for-swift-4/

0