dàn âm thanh hội trường, âm thanh lớp học, âm thanh phòng họp, loa trợ giảng

Kiểu xâu String trong Dart/Flutter

kiểu xâu string trong Dart

Kiểu xâu String trong Dart/Flutter

Kiểu xâu String trong Dart là một trong những kiểu dữ liệu cơ bản (built in type) cùng với kiểu số (số nguyên int, số thực double) và các kiểu tập hợp set, kiểu danh sách List

1. Kiểu xâu String là gì?

Kiểu String trong Dart sử dụng để biểu diễn chuỗi ký tự Unicode(UTF-16) (bạn có thể sử dụng các xâu có kí tự tiếng Việt hoặc bất cứ thứ tiếng nào mà sử dụng được với mã Unicode.

Để khai báo/sử dụng một xâu (từ giờ chúng tôi sẽ gọi trực tiếp là String) chúng ta sử dụng cách khai báo như trong bài Biến và các kiểu dữ liệu trong Dart, và đặt String đó trong cặp dấu nháy đơn ' hoặc cặp dấu nháy kép "Ví dụ 'Phan Văn Phương' hoặc  "là người đẹp trai nhất thế giới"

Theo gợi ý của Visual Studio Code, thì chúng ta nên sử dụng cặp dấu nháy đơn ' để bao nội dung của một String.

Nếu của String của bạn gồm nhiều dòng, có thể đặt chúng trong cặp nháy tam '''(gồm 3 dấu nháy đơn ') hoặc """ (gồm 3 dấu nháy kép "), ví dụ:

xau1 = '''đây là một String
nằm 
trên
nhiều dòng''';

xau2 = """mùa xuân sang có hoa anh đào
blah blah...
tôi là một con gà""";

2. Truy cập đến từng kí tự của String

Các kí tự của một String đều được đánh chỉ số từ 0 cho đến n-1, với n là độ dài của String và được truy cập qua thuộc tính length

void main() {
  String viDu = 'abcdef';
  print(viDu.length); //kết quả 6
  print(viDu[2]); //kết quả 'c'
}

Kiểu String là một kiểu dữ liệu immutable, tức là kiểu dữ liệu không thể thay đổi. Do đó, các phép gán làm thay đổi nội dung của String đều không hợp lệ. Chẳng hạn với xâu viDu ở trên, nếu bạn cố tình gán viDu[2] = '3' thì Dart sẽ rủa cho bạn một trận 🙂

Tuy nhiên, bạn có thể sử dụng nhiều phương thức (method) trên một String như nối, tách, cắt khoảng trống… của một String, vì khi đó thực ra String ban đầu không thay đổi mà kết quả của các phương thức này được gán vào một String mới!

void main() {
  String viDu = '  ab  cdef    ';
  viDu.trim();
  print(viDu);//kết quả vẫn là '  ab  cdef    '
  print(viDu.trim());//kết quả là 'ab  cdef'
}

3. Các kí tự đặc biệt của một String

  • Để viết một kí tự nháy đơn ' bạn có thể bao trong một String sử dụng cặp ngoặc nháy kép " và ngược lại, ví dụ
void main() {  
  print("đây là dấu nháy đơn ' này");
  print('còn đây là dấu nháy kép "');
}
  • Hoặc sử dụng kí tự thoát \ (string escape) cùng với các dấu nháy đó, cách này có thể sử dụng cho cả các kí tự khác như \ $
void main() {
  print('in các kí tự ~!@#%^&*() dễ oẹt');//in các kí tự ~!@#%^&*() dễ oẹt
  print('các kí tự đặc biệt: \' $ \\');//các kí tự đặc biệt: ' $ \
  print('còn đây là kí tự xuống \n dòng');
}
  • Kí tự xuống dòng \n
  • Kí tự tab \t
  • Kí tự xóa kí tự liền trước \b
  • Kí tự trở về đầu của xâu \r
void main() {
  print('nu na nu nống\n cái cống nằm trong\ncon ong nằm ngoài\b\b\b\rủ khoai chấm\tmật');
}

Khi chạy chương trình, chúng ta thu được kết quả như sau:

kiểu xâu string trong dart flutter

4. Các thuộc tính và phương thức của kiểu xâu String trong Dart

Lưu ý rằng kiểu xâu String trong Dart là immutable, nên các phương thức sau đều trả về một xâu mới, còn xâu ban đầu thì không hề thay đổi.

4.0. Các thuộc tính của kiểu xâu String trong Dart

  • length cho độ dài của xâu
  • isEmpty kiểm tra xem một String có là xâu rỗng hay không
  • isNotEmpty kiểm tra xem một String có khác xâu rỗng hay không

4.1. Xâu con trong Dart

Sử dụng phương thức subString(i,j) để lấy ra một xâu con từ chỉ số i tới chỉ số j-1 của xâu đã cho.

void main() {
  String xauMe = 'abcdefgh';
  String xauCon = xauMe.substring(2,5);
  print(xauCon);//kết quả 'cde'
}
  • indexOf(Pattern pattern,[int start = 0]) trả về số nguyên là vị trí index xuất hiện đầu tiên của pattern ở trong xâu, bắt đầu tìm từ vị trí start (mặc định là 0, tức tìm từ đầu xâu), nếu không tìm thấy thì trả về -1
void main(){
  var string = 'Dartisans';
  string.indexOf('art');                 //kết quả 1
  string.indexOf(RegExp(r'[A-Z][a-z]')); //kết quả 0
  string.indexOf(RegExp(r'dart'));       //kết quả  -1
}
  • lastIndexOf(Pattern pattern,[int? start]) tương tự như trên nhưng là vị trí xuất hiện cuối cùng của pattern
void main(){
  var string = 'Dartisans';
  string.lastIndexOf('a');                    //kết quả  6
  string.lastIndexOf(RegExp(r'a(r|n)'));      //kết quả 6
  string.lastIndexOf(RegExp(r'DART'));        //kết quả -1
}

4.2. Các phương thức kiểm tra xâu con

  • startsWith(String other) kiểm tra xem xâu có bắt đầu bằng xâu other hay không.
  • endsWith(String other) kiểm tra xem xâu có kết thúc bằng xâu other hay không.
  • contains(Pattern other,[int startIndex = 0]) dùng để kiểm tra một xâu có chứa other hay không, bắt đầu từ kí tự index, mặc định bằng 0. Kết quả trả về là true nếu tìm thấy và false nếu không tìm thấy. Ở đây other có thể là một xâu, một kí tự hoặc một biểu thức chính quy regex

4.3. Chuyển đổi sang chữ hoa, chữ thường

  • toLowerCase() trả về một xâu mới dạng chữ thường của xâu ban đầu
  • toUpperCase() trả về một xâu mới dạng chữ HOA của xâu ban đầu

4.4. Cắt khoảng trắng

  • trim() dùng để cắt các khoảng trắng (cấu cách, dấu tab, kí tự xuống dòng) ở 2 đầu của xâu
  • trimLef()trimRight() dùng để cắt các khoảng trắng (cấu cách, dấu tab, kí tự xuống dòng) ở đầu bên trái, đầu bên phải của xâu
void main() {
  String str1 = ' \n \t Mua Xuan sang co hoa anh dao\n   ';
  print('|' + str1.trim() + '|');
  print('|' + str1.trimRight() + '|');
  print('|' + str1.trimLeft() + '|');
  print('|' + str1 + '|');
}

4.5. Nối hai xâu trong Dart

Bạn có thể sử dụng toán tử + để nối hai xâu String trong Dart.

void main() {
  String str1 = 'Xuân Hạ Thu Đông';
  String str2 = '... Rồi Lại Xuân';
  print(str1 + str2);//kết quả 'Xuân Hạ Thu Đông... Rồi Lại Xuân'
}

4.6. Tách một xâu trong Dart

Sử dụng phương thức split(kí_tự_tách) để tách một String thành các xâu con, ngăn cách nhau bởi kí_tự_tách

void main() {
  var text = "mùa xuân sang có hoa anh đào";

  var parts = text.split(' ');
  print(parts);

  print(text);
}

4.7. Thay thế xâu con

Sử dụng phương thức replaceAll(s, t) để thay thế tất cả các xâu con s bởi xâu t trong xâu ban đầu. Đương nhiên, kết quả trả về là một xâu mới.

void main() {
  String str1 = 'Mua Xuan sang co hoa anh dao';
  print(str1.replaceAll('Xuan', 'Dong'));//kết quả 'Mua Dong sang co hoa anh dao'
  print(str1); //vẫn là 'Mua Xuan sang co hoa anh dao'
}

4.8. Chuyển số sang xâu

Bạn sử dụng hàm toString() đối với các đối tượng kiểu số (xem chi tiết trong bài Kiểu số trong Dart/Flutter)

5. Duyệt qua các kí tự của String

Phương thức runes trả về một Iterable gồm các mã Unicode của từng kí tự trong xâu. Kết hợp phương thức runes với vòng lặp for, chúng ta có thể duyệt qua từng kí tự của xâu.

void main() {
  var word = 'abcdefgh';

  print(word.runes); //kết quả (97, 98, 99, 100, 101, 102, 103, 104)
  for (var c in word.runes) {
    print(String.fromCharCode(c));
  }

  for (var c in word.runes) {
    print(c);
  }
}

6. Nội suy chuỗi (String Interpolation)

Sử dụng kí tự $ để nội suy nội dung của một xâu.

void main() {
  int a = 5;
  int b = 7;

  String ketQua = "Tổng của $a và $b là ${a + b}";
  print(ketQua); //Tổng của 5 và 7 là 12
}
Leave a Reply

Your email address will not be published. Required fields are marked *

Related Posts
Tư Vấn App Học Ngoại Ngữ
Phần Mềm Bản Quyền
Chat Ngay