[C# cơ bản] – String và StringBuilder

1. Kiểu String

Một biến kiểu String được coi là bất biến, nghĩa là sẽ không thay đổi được giá trị khi đã được khởi tạo.

Ví dụ:

Khi khai báo string str = “www.hienminh.com”. Biến str sẽ chiếm bộ nhớ trong heap

Sau đó, thay đổi chuỗi thành str = “Học lập trình miễn phí tại www.hienminh.com”, chương trình sẽ tạo đối tượng chuỗi mới trên heap, thay vì chỉnh sửa nội dung của chuỗi ban đầu tại cùng địa chỉ. Do vậy, sẽ giảm hiệu năng nếu chuỗi thay đổi nhiều lần bởi việc thay thế, nối chuỗi, xóa hoặc chèn chuỗi mới thay cho chuỗi ban đầu !

Hình 1. Cấp phát bộ nhớ cho biến String

2. Kiểu StringBuilder

Để giải quyết vấn đề trong sử dụng kiểu String, các bạn có thể sử dụng StringBuilder.

StringBuilder là kiểu đối tượng động, cho phép bạn mở rộng số lượng kí tự của một chuỗi. Khi bạn thay đổi nội dung chuỗi, nó không tạo một đối tượng mới trong bộ nhớ giống kiểu String, mà nó mở rộng bộ nhớ để lưu trữ giá trị chuỗi mới thay thế.

Hình 2. Cấp phát bộ nhớ cho StringBuilder

2.1. Cách khai báo & sử dụng

StringBuilder có thể khai báo và khởi tạo giống một class.

StringBuilder sb = new StringBuilder();

hoặc khai báo và khởi tạo giá trị luôn:

StringBuilder sb = new StringBuilder(“hienminh.com”);

hoặc khai báo với số lượng kí tự xác định cho chuỗi

StringBuilder sb = new StringBuilder(“www.hienminh.com”, 100);    //xác định 100 ký tự cho chuỗi

2.2. Các phương thức quan trọng của StringBuilder

Tên phương thức Mô tả
StringBuilder.Append(value ToAppend) Nối các giá trị được truyền vào cuối của đối tượng StringBuilder hiện tại
StringBuilder.Insert(index, valueToAppend) Chèn một chuỗi tại vị trí xác định của đối tượng StringBuilder hiện tại.
StringBuilder.Remove(int startIndex, int length) Xóa bỏ số lượng ký tự xác định tại vị trí bắt đầu của đối tượng StringBuilder hiện tại
StringBuilder.Replace(oldValue, newValue) Thay thế các ký tự cũ bằng các ký tự mới

2.2.1. Phương thức Append()/AppendLine()

Kết quả:

StringBuilder.Append()
Hình 3. Phương thức Append() trong StringBuilder

2.2.2. Phương thức Insert(index, valueToAppend)

Kết quả:

StringBuilder.Insert
Hình 4. Phương thức Insert trong StringBuilder

2.2.3. Phương thức Remove(int startIndex, int length)

Kết quả:

StringBuilder.Remove()
Hình 5. Phương thức Remove() trong StringBuilder

2.2.4. Phương thức Replace(oldValue, newValue)

Kết quả:

StringBuilder.Replace()
Hình 6. Phương thức Replace() trong StringBuilder

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.