Kiểu ký tự Character và Chuối ký tự String

Trong Swift một ký tử có thể biểu diễn qua kiểu Character, tập hợp nhiều ký tự theo một thứ tự được gọi là chuỗi ký tự và nó có kiểu String

Ví dụ khai báo biến kiểu ký tự Character và chuỗi ký tự String

//Khai báo một biến chuỗi
var message: String = "Xin chào Swift"
//Khai báo một biến Character
var firstChar: Character = "X"

Biến chuỗi có thuộc tính count (message.count) cho biết số lượng ký tự trong chuỗi. Thuộc tính isEmpty là true thì đó là chỗi rỗng.

Khởi tạo String cụ thể

Một chuỗi ký tự cụ thể được thể hiện bằng cách gõ tập hợp các ký tự chứa trong dấu "" ví dụ "Đây là một chuỗi"

Nếu trong code muốn đưa vào chuỗi cụ thể nằm trên nhiều dòng, thì nội dung của của được gõ giữa cặp ký kiệu """, ví dụ:

var baitho = """
Dữ dội và dịu êm
Ồn ào và lặng lẽ
Sông không hiểu nổi mình
Sóng tìm ra tận bể
"""
Chèn ký tự đặc biệt: các ký tự đặc biệt được điền vào chuỗi sau ký hiệu \ ví dụ \" tương ứng với ", \n ký tự xuống dòng, \r ký tự về đầu dòng, \' ký hiệu ', \u{xxx} chèn ký tự có mã Unicode là xxx ( Unicode Code)

Chuỗi rỗng

Một biến String có thể là rỗng (không chứa ký tự nào), để khởi tạo ra một chuỗi rỗng gán nó cho giá trị "" hoặc khởi tạo với String(), kiểm tra xem chuỗi có rỗng dùng bằng thuộc tính isEmpty xem ví dụ:

var emptyString1: String = ""
var emptyString2: String = String()
if (emptyString1.isEmpty) {
    print("Chuỗi rỗng")
}

Nối chuỗi

Hai chuỗi cụ thể có thể nối với nhau để tạo ra một chuỗi mới bằng toán tử + hoặc một biến chuỗi nối thêm vào sau nó một chuỗi khác với toán tử += ví dụ:

var xinchao = "Xin chào ";
var yourname = "XuanThuLab"
var messageXinchao = xinchao + yourname;
print(messageXinchao) //Xin chào XuanThuLab

messageXinchao += ", bạn đang học Swift";
print(messageXinchao) //Xin chào XuanThuLab, bạn đang học Swift

Chèn biểu thức, biến ... vào chuỗi

Khởi tạo chuỗi có thể chèn vào giữa các ký tự của nó một biểu thức, biến ... để sau khởi tạo chuỗi thực sự đã gồm giá trị biểu thức ở vị trí chỉ định, làm điều này chỉ việc đưa biến, biểu thức vào một dấu () với tiền tố \

var number = 5;
var kq = "\(number) * 2 bằng \(number * 2)"
print(kq)
//5 * 2 bằng 10

Trong chuỗi trên thì ký hiệu \(number) sẽ thay bằng 5, chỗ có biểu thức \(number * 2) sẽ có giá trị thực tế là 10

So sánh hai chuỗi

Hai chuỗi giống nhau nếu các ký tự trong chuỗi hoàn toàn giống nhau (số lượng, thứ tự, giá trị trị ký tự). Kiểm tra giống nhau dùng toán tử == kiểm tra khác nhau dùng toán tử !=

let s1 = "Đây là một chuỗi"
let s2 = "Đây là một chuỗi"
if s1 == s2 {
   print("Hai chuỗi giống nhau")
}
//Hai chuỗi giống nhau

Chuỗi và ký tự

Nếu muốn duyệt qua từng ký tự trong chuỗi thì sử dụng vòng lặp for ... in, ví dụ:

var w = "WED"
for c in w {
    print(c)
}
//W
//E
//D

Một chuỗi có thể khởi tạo từ một mảng các ký tự

let achar: [Character] = ["X","T","L"]
let stringM = String(achar)
print(stringM)
//XTL

Mỗi ký tự nằm trong chuỗi nó ở một vị trí có chỉ số nào đó gọi là index (có kiểu Index), khi biết chỉ số index của ký tự trong chuỗi thì có thể lấy ký tự đó ra theo cách thức truy cập phần tử mảng: string[index]

Dùng các thuộc tính, phương thức sau để tìm index của một ký tự:

  • string.startIndex chỉ số ký tự đầu tiên của chuỗi
  • string.endIndex chỉ số sau ký tự cuối cùng
  • string.index(before:index) trả về chỉ số của ký tự phía index
  • string.index(after:index) trả về chỉ số của ký tự sau index
  • string.index(index, offsetBy:sokytu) trả về chỉ số của ký tự cách index một sokytu
var xtlab = "XUANTHULAB.NET"

var indexChuDauTien:String.Index = xtlab.startIndex
var indexChuChuoiCung = xtlab.index(before: xtlab.endIndex)
var indexChu_CachDauTien5 = xtlab.index(indexChuDauTien, offsetBy: 5)
print(xtlab[indexChuDauTien])           //X
print(xtlab[indexChuChuoiCung])         //T
print(xtlab[indexChu_CachDauTien5])     //H

Chèn thêm và cắt bớt trong chuỗi

Chèn một ký tự vào vị trí có chỉ số là index dùng phương thức string.insert(kytu, at:index)

Chèn một chuỗi ký tự vào vị trí có chỉ số là index dùng phương thức string.insert(contentsOf:choikytu, at:index)

var xtlab = "XUANTHULAB.NET"

xtlab.insert("!", at:xtlab.endIndex)
print(xtlab) //XUANTHULAB.NET!

xtlab.insert(contentsOf:" - Học Swift", at:xtlab.index(before:xtlab.endIndex))

print(xtlab) //XUANTHULAB.NET - Học Swift!

Nếu muốn loại bỏ 1 ký tự có chỉ số là index thì dùng string.remove(at:index)

Nếu muốn loại bỏ cả một chuỗi con, thì cần chỉ ra một dải từ chỉ số đầu đến cuối của chuỗi con cần cắt trong phuwng thức string.removeSubrange(range)

var lts = "Lập trình Swift!"
//Xóa ký tự cuối
lts.remove(at:lts.index(before:lts.endIndex));
print(lts) //Lập trình Swift

//Dải từ ký tự đầu tiến đến ký tự thứ tự 9
let catbot = lts.startIndex...lts.index(lts.startIndex, offsetBy:9)
lts.removeSubrange(catbot)
print(lts) //Swift

Đăng ký nhận bài viết mới