CodeGym /Các khóa học /C# SELF /Chuỗi và văn bản: kiểu string, làm việc với chuỗi

Chuỗi và văn bản: kiểu string, làm việc với chuỗi

C# SELF
Mức độ , Bài học
Có sẵn

1. Tìm hiểu kỹ hơn về kiểu string

Kiểu string là một trong những kiểu được dùng nhiều nhất trong C#. Có khi là dùng nhiều nhất luôn ấy. Kiểu này siêu xịn vì bạn có thể lưu văn bản trong biến kiểu này. Ngoài ra, khác với các kiểu intdouble, object kiểu string có cả đống hàm khác nhau, nhờ đó bạn có thể làm nhiều trò hay ho với chuỗi.

Thêm nữa, tất cả object trong C# (đúng là tất cả luôn) đều có thể chuyển thành kiểu string. Hoặc nói chuẩn hơn, mọi object trong C# đều trả về biểu diễn dạng text (chuỗi) của nó. Mình sẽ còn quay lại kiểu này nhiều lần nữa (vì nó quá hữu ích và thú vị), nhưng hôm nay mình sẽ giới thiệu những thứ cơ bản nhất.

Tạo biến kiểu string

Kiểu string được tạo ra để lưu trữ chuỗi (văn bản). Để tạo một biến có thể lưu text trong code, bạn dùng lệnh:

string ten;
Tạo biến kiểu string

Ở đây ten là tên biến.

Ví dụ:

Lệnh Mô tả
string name; Tạo biến chuỗi name
string message; Tạo biến chuỗi message
string text; Tạo biến chuỗi text

Cũng giống như với kiểu intdouble, bạn có thể dùng cú pháp ngắn gọn để tạo nhiều biến kiểu string cùng lúc:

string ten1, ten2, ten3;
Tạo các biến kiểu string

2. Gán giá trị cho biến kiểu string

Để gán giá trị cho biến kiểu string, bạn dùng lệnh:

ten = "giatri";
Gán giá trị cho biến kiểu string

Và đây là điểm khác biệt đầu tiên so với các kiểu đã học. Tất cả giá trị kiểu string đều là chuỗi văn bản và phải nằm trong dấu ngoặc kép.

Ví dụ:

Lệnh Ghi chú
string name = "Anya"; Biến name chứa text Anya
string city = "New York"; Biến city chứa text New York
string message = "Hello!"; Biến message chứa text Hello!

3. Khởi tạo biến kiểu string

Giống như với kiểu intdouble, bạn có thể khởi tạo biến kiểu string ngay khi tạo biến. Thực ra, bạn có thể làm vậy với tất cả các kiểu trong C#. Nên mình sẽ không nhắc lại nữa đâu.

string ten1 = "chuoi1", ten2 = "chuoi2";
Tạo biến kiểu string

Ví dụ tạo và khởi tạo biến

string name = "Anya", city = "New York", message = "Hello!";

Chỉ thay đổi được biến đã có giá trị

Trình biên dịch C# sẽ báo lỗi nếu bạn khai báo biến mà không gán giá trị rồi lại dùng nó.

Code kiểu này sẽ không chạy được đâu:

string name;
Console.WriteLine(name); // Biến name chưa được khởi tạo. Chương trình sẽ không biên dịch được.
int a;
a++; // Biến a chưa được khởi tạo. Chương trình sẽ không biên dịch được.
double x;
double y = x; // Biến x chưa được khởi tạo. Chương trình sẽ không biên dịch được.

4. Nối chuỗi — ghép chuỗi lại

Có một thứ rất hay và đơn giản bạn có thể làm với chuỗi trong C# — đó là ghép chúng lại. Thao tác này gọi là nối chuỗi. Hoặc để dễ nhớ thì gọi là Kon-Ko-Te-Na-Tsi-Ya. Nhưng thường mọi người gọi là "ghép chuỗi" hoặc đơn giản là "cộng chuỗi".

Để ghép hai chuỗi, bạn dùng dấu +. Đơn giản lắm:

"giatri1" + "giatri2"
Nối hai chuỗi

Ví dụ:

Lệnh Ghi chú
string name = "Anya" + "Anya"; name chứa chuỗi AnyaAnya
string city = "New York" + "Anya"; city chứa chuỗi New YorkAnya
string message = "Hello! " + "Anya"; message chứa chuỗi Hello! Anya

Và tất nhiên, bạn có thể cộng nhiều chuỗi cùng lúc, hoặc cộng chuỗi với biến.

Ví dụ:

string name = "Anya";                // name chứa chuỗi Anya
string city = "New York";           // city chứa chuỗi New York
string message = "Hello!" + city + name + city; // message chứa chuỗi Hello!New YorkAnyaNew York

5. Chuỗi rỗng

Ở ví dụ cuối, bạn thấy text trong biến message hơi khó đọc vì thiếu dấu cách. Để thêm một hoặc nhiều dấu cách, bạn chỉ cần viết chúng trong code và đặt trong dấu ngoặc kép. Dễ lắm:

" "
Chuỗi chứa một dấu cách

À mà, nếu bạn không để gì giữa hai dấu ngoặc kép (chỉ viết hai dấu ngoặc kép liền nhau), bạn sẽ có cái gọi là "chuỗi rỗng":

""
Chuỗi rỗng

Về lý thuyết thì nó vẫn là chuỗi, nhưng khi in ra màn hình thì không hiện gì cả. Khi ghép với chuỗi khác cũng không có gì xảy ra. Nó giống như số 0 nhưng dành cho chuỗi.

6. Escape ký tự đặc biệt trong chuỗi

Bạn biết rồi đấy, chuỗi được bao bởi dấu ngoặc kép. Nhưng nếu muốn chèn dấu ngoặc kép vào trong chuỗi thì sao? Nếu mình viết dấu ngoặc kép trong chuỗi, liệu trình biên dịch có hiểu đó là kết thúc chuỗi không?

Đúng rồi. Nó sẽ hiểu vậy. Nên dấu ngoặc kép trong text phải thay bằng cặp ký tự \". Code sẽ như này:

string quote = "Anh ấy nói: \"Xin chào!\"";
Console.WriteLine(quote); // Anh ấy nói: "Xin chào!"

Thực ra còn lắt léo hơn chút. Ký tự \ được coi là ký tự đặc biệt (ký tự điều khiển) trong chuỗi. Nhờ nó bạn có thể chèn các "ký tự không in được" như xuống dòng, tab, v.v. Còn nếu muốn chèn chính ký tự \ thì phải viết hai lần.

Dưới đây là 4 tổ hợp hay dùng nhất:

Cách viết Ý nghĩa
\n Xuống dòng (newline)
\t Tab (thụt lề)
\\ Chèn đúng ký tự \
\" Dấu ngoặc kép trong chuỗi

Ví dụ:

string multiline = "Chuoi 1\nChuoi 2";
Console.WriteLine(multiline);

Kết quả in ra:

// Chuoi 1
// Chuoi 2

7. Interpolation chuỗi ($-chuỗi)

C# là ngôn ngữ hiện đại nên cho phép bạn dễ dàng và đẹp mắt chèn giá trị biến vào trong chuỗi bằng interpolation — chỉ cần thêm ký tự $ trước dấu ngoặc kép, và trong chuỗi dùng dấu ngoặc nhọn {}. Cái này chắc bạn biết rồi.

Nhưng có thể bạn chưa biết là trong dấu ngoặc nhọn bạn có thể dùng cả biểu thức và gọi hàm luôn! Ví dụ:

string name = "Olya";
int birthYear = 1999;

string info = $"Toi ten la {name}, toi {2025-birthYear} tuoi.";
Console.WriteLine(info); 	// Toi ten la Olya, toi 26 tuoi.

Cách này giúp code dễ đọc hơn hẳn và giảm lỗi (và cả dấu ngoặc nữa). Về interpolation mình sẽ nói kỹ hơn ở bài khác, nhưng với trường hợp đơn giản thì cứ dùng thoải mái nhé.

8. Các hàm riêng của chuỗi

Kiểu string có các hàm riêng (còn gọi là method). Nhiều lắm, và chúng giúp coder nhàn hơn rất nhiều. Hôm nay mình sẽ giới thiệu vài cái đơn giản nhất. Ví dụ:

Hàm Mô tả Kết quả ví dụ
str.Length Độ dài chuỗi "abc".Length → 3
str.ToUpper() Chuyển thành chữ hoa "abc".ToUpper() → "ABC"
str.ToLower() Chuyển thành chữ thường "ABC".ToLower() → "abc"
str.Trim() Xóa khoảng trắng ở hai đầu " x y ".Trim() → "x y"

Ví dụ dùng hàm chuỗi

Tất cả các hàm này gọi như sau: bien.ham(...) .

Lấy độ dài chuỗi:

string name = "Andrey";
int length = name.Length;
Console.WriteLine(length); // 6, vì có 6 ký tự

Chuyển chuỗi thành chữ hoa hoặc chữ thường:

string original = "Privet";
Console.WriteLine(original.ToUpper()); // PRIVET
Console.WriteLine(original.ToLower()); // privet

Xóa khoảng trắng ở hai đầu (rất hữu ích khi nhập từ bàn phím):

string messy = "   hello   ";
Console.WriteLine(messy.Trim()); // "hello"

Mỗi hàm như vậy trả về một chuỗi mới, chuỗi cũ không thay đổi.

2
Nhiệm vụ
C# SELF, mức độ, bài học
Đã khóa
Tạo và khởi tạo biến kiểu string
Tạo và khởi tạo biến kiểu string
2
Nhiệm vụ
C# SELF, mức độ, bài học
Đã khóa
Làm việc với chuỗi và nội suy chuỗi
Làm việc với chuỗi và nội suy chuỗi
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION