Trang chủ Liên hệ

Bài 25 C# cơ bản - Lớp String trong Lập trình C# căn bản

CÔNG TY TNHH THIẾT BỊ ĐO LƯỜNG VÀ ĐIỀU KHIỂN 04/03/2023

Nội dung

Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:

Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:

Lớp String trong C#

String là một kiểu dữ liệu tham chiếu được dùng để lưu trữ chuỗi ký tự. Vì là một kiểu dữ liệu nên cách khai báo và sử dụng hoàn toàn tương tự các kiểu dữ liệu khác (đã trình bày trong bài KIỂU DỮ LIỆU và BIẾN)

Hôm nay mình sẽ không bàn đến khai báo của nó nữa mà đi sâu vào các thuộc tính và phương thức mà lớp String hỗ trợ.


Lưu ý:

 string a = "mcttvietnam";

            a.Substring(3, 1);

Thì biến a sau khi thực hiện lệnh Substring vẫn mang giá trị là “mcttvietnam” .

Nếu muốn biến a mang giá trị mới khi thực hiện Substring thì bạn phải gán ngược lại giá trị mới đó cho biến a:

 a = a.Substring(3, 1);

Ứng dụng lớp String vào việc xử lý chuỗi

Để hiểu rõ cách sử dụng các phương thức trên. Chúng ta cùng thực hiện chuẩn hoá một chuỗi họ tên của người dùng với các yêu cầu:

Ý tưởng:

Bây giờ các bạn hãy làm thử trước khi xem code tham khảo của mình nào!

Sau đây là code tham khảo để giải quyết các vấn đề trên:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Bai_25_01
{
    class Program
    {
        static void Main(string[] args)
        {
            string FullName;
            String ResultName="";

            Console.Write("Nhap ho va ten : ");
            FullName = Console.ReadLine();

            //Cat khoang trang dau va cuoi chuoi
            FullName = FullName.Trim();

            //Tim 2 khoang trang thi thay the bang 1 khoang trang
            while (FullName.IndexOf("  ") !=-1)
            {
                FullName = FullName.Replace("  "," ");
            }
            /*
             * Cat chuoi ho ten ra thanh cac tu
             * Sau do duyet mang de chuan hoa tung tu mot
             * Khi duyet moi tu ra thuc hien cac chu cai dau tien va luu tru trong FirstChar
             * Thuc hien viet hoa chu cai dau va viet thuong cac chu con lai
             * Cuoi cung la luu vao bien ResultName.
             */
            string[] SubName = FullName.Split(' ');
            for (int i=0;i<SubName.Length;i++)
            {
                string FirstChar = SubName[i].Substring(0, 1);
                string OtherChar = SubName[i].Substring(1);
                SubName[i] = FirstChar.ToUpper() + OtherChar.ToLower();
                ResultName += SubName[i] + " ";
            }
            Console.WriteLine("Ho Ten cua ban la: " + ResultName);
            Console.ReadLine();

        }
    }
}

Chương trình trên vẫn còn 1 lỗi nhỏ đó là nếu như bạn không nhấn phím space để tạo khoảng trắng mà nhấn phím Tab thì chương trình sẽ không ra kết quả như ý.

Code them

// fix người dùng cách bằng nút tab

while (Fullname.IndexOf("\t") != -1)

{

Fullname = Fullname.Replace("\t", " ");

}

Lớp StringBuilder trong C#

Đặc điểm

Lớp StringBuilder được .NET xây dựng sẵn giúp chúng ta thao tác trực tiếp với chuỗi gốc và giúp tiết kiệm bộ nhớ hơn so với lớp String.

Đặc điểm của StringBuilder là:

Từ 2 đặc điểm này đã làm nổi bật lên ưu điểm của StringBuilder so với String đó là ít tốn bộ nhớ. Cụ thể qua ví dụ sau:

string Value = "How";
            Value = Value + "mctt";

Ở 2 dòng lệnh ta có thể thấy bộ nhớ sẽ được lưu trữ như sau:

Như vậy ta thấy sẽ có 1 vùng nhớ không sử dụng nhưng vẫn còn nằm trong bộ nhớ, đó là vùng nhớ chứa giá trị “How” – giá trị ban đầu của biến Value.

Đối với StringBuilder thì khác:

StringBuilder MutableValue = new StringBuilder("How");
 MutableValue.Append("mctt");

Ở 2 câu lệnh trên bộ nhớ sẽ lưu trữ như sau:

Rõ ràng là ta không tạo ra quá nhiều vùng nhớ và cũng không lãng phí bất cứ vùng nhớ nào.

Sử dụng

Cách khởi tạo 1 đối tượng StringBuilder có đôi chút khác so với String.

Cú pháp:

StringBuilder <tên biến> = new StringBuilder();

StringBuilder <tên biến> = new StringBuilder(<chuỗi giá trị>);

Trong lớp StringBuilder có các phương thức như: Remove, Insert, Replace được sử dụng hoàn toàn giống như lớp String.

Chỉ có vài phương thức mới các bạn cần chú ý:

Lưu ý:

Kết luận

Nội dung bài này giúp các bạn nắm được:

Bài sau chúng ta sẽ tìm hiểu về STRUCT TRONG C#.

Bài viết liên quan