Chuỗi. Tổng quan.

Chuỗi là một danh sách (hoặc chuỗi) các ký tự theo một thứ tự cụ thể. Toàn bộ chuỗi ký tự được coi là một đối tượng duy nhất.

Ký tự là bất kỳ thứ gì bạn có thể nhập trên bàn phím bằng một lần nhấn phím (chữ cái, số, đảo ngược dấu gạch chéo hoặc một số ký tự khác).
Các chuỗi có thể có khoảng trắng: "Xin chào thế giới!".
Chuỗi rỗng là chuỗi có 0 ký tự.
C sharp chấp nhận dưới dạng chuỗi mọi thứ được viết trong dấu ngoặc kép (""), chuỗi thuộc loại chuỗi.

Điều quan trọng cần nhớ: chuỗi trong C# là bất biến.

Bạn có thể ghi giá trị mới vào chuỗi bằng toán tử nhập:
string s = Console.ReadLine(); Bạn cũng có thể chỉ cần gán một giá trị chuỗi cho biến, ví dụ:< /span> string s = "C sharp"; Bạn có thể xác định độ dài của chuỗi như sau: int n = s.Length;


So sánh chuỗi. Các chuỗi có thể được so sánh với nhau giống như các số. Bạn có thể xác định dòng nào lớn hơn, dòng nào nhỏ hơn.

Khi so sánh các chuỗi, các mã ký tự được so sánh. Có hàng chục, nếu không muốn nói là hàng trăm mã hóa ký tự. Cách dễ nhất để hiểu khái niệm này là hiểu một trong những cách đơn giản nhất, ASCII (bạn có thể đọc về nó tại đây< /a>). 
Cần phải hiểu rằng trong các bảng mã hiện đại, cả chữ cái tiếng Nga và tiếng Anh đều được sắp xếp theo thứ tự bảng chữ cái, các số cũng đi từ nhỏ hơn đến lớn hơn. 
Ví dụ: trong bảng mã ASCII, mã của chữ cái tiếng Anh 'A' - 65, chữ 'a' - 97, chữ số '0' có mã 48. Các chữ cái tiếng Nga nằm ở phần mở rộng của bảng mã ASCII (các số từ 128 đến 255). Chữ hoa đứng trước (nghĩa là có mã nhỏ hơn) so với chữ thường.
Trong hầu hết các bảng mã được sử dụng, các mẫu đều giống nhau, chữ thường muộn hơn chữ in hoa, số sớm hơn chữ cái và chữ cái tiếng Nga muộn hơn chữ cái tiếng Anh.
Khi so sánh các ký tự hoặc chuỗi, C# chuyển đổi các ký tự thành giá trị thứ tự tương ứng của chúng rồi so sánh từ trái sang phải. 

Ví dụ: "đầu máy" < "steamboat", bởi vì các từ khác nhau ở chữ cái thứ năm và "in" < "x".

Khi nhập một chuỗi, bạn có thể chia ngay thành các phần bằng bất kỳ dấu phân cách nào.
Chúng tôi đã làm điều này trước đây khi chúng tôi nhập nhiều biến số trên cùng một dòng. Chúng tôi đã sử dụng phương thức Split() để chia một chuỗi thành nhiều phần. Theo mặc định, nó phân tách các chuỗi thành các chuỗi con theo dấu cách.
Sử dụng phương pháp này, bạn có thể chia chuỗi thành các phần, chẳng hạn như bằng dấu cách. Và viết từng phần của chuỗi thành một biến riêng.
Ví dụ: chuỗi[] S = Console.ReadLine().Split(); Trong ví dụ, khi nhập hai từ cách nhau bởi dấu cách, từ đầu tiên được lưu trong phần tử 0 của mảng s[0], từ thứ hai - trong s[1].

Nếu cần sử dụng nhiều ký tự làm dấu phân cách, bạn có thể chỉ định các ký tự được phân tách bằng dấu phẩy:
  string[] S = Console.ReadLine().Split(new[] { ' ', '\n' });  Nếu có thể có nhiều khoảng trắng liên tiếp trong chuỗi đầu vào, thì khoảng trắng cũng có thể xuất hiện trong mảng cuối cùng, để loại trừ điều này, bạn cần thêm một tham số: string[] S = Console.ReadLine().Split(new[] { ' ', '\n' }, StringSplitOptions.RemoveEmptyEntries); Nếu bạn cần sử dụng dấu phân cách chuỗi con: string[] S = Console.ReadLine().Split(new[] { "\\r\\n", "\r", "\n", "" }, StringSplitOptions.RemoveEmptyEntries);

Các chuỗi có thể được thêm vào với nhau bằng cách sử dụng dấu "+". Thao tác này được gọi là nối chuỗi hoặc nối
Ví dụ:  chuỗi s = "Xin chào," ; chuỗi s1 = "thế giới"; Console.WriteLine(s + s1); Màn hình sẽ hiển thị cụm từ "Xin chào thế giới" (không có dấu ngoặc kép).
 

Chỉ số hàng tham chiếu
Mỗi ký tự trong một chuỗi có một số (được gọi là chỉ mục) và việc lập chỉ mục trong ngôn ngữ lập trình C# bắt đầu từ số không. Nghĩa là, ký tự đầu tiên có chỉ số 0, ký tự thứ hai - 1, v.v.
Các ký tự chuỗi có thể được truy cập bằng chỉ mục, được chỉ định trong dấu ngoặc vuông s[i].
 
Ví dụ 

Quan trọng!
Khi truy cập một phần tử chuỗi tại chỉ mục i, loại s[i] không phải là string mà là char. Điều này có nghĩa đây không phải là một chuỗi mà là một ký tự tương ứng với một số nguyên nào đó trong bảng mã ký tự. Đặc biệt, khi bạn cộng hai phần tử kiểu char , bạn sẽ nhận được một số nguyên - phép cộng mã của các phần tử này. Tuy nhiên, nếu bạn hiển thị s[i], ký tự thứ i của chuỗi sẽ được hiển thị, chứ không phải số tương ứng với nó. 

Chuỗi S H e l l o
Chỉ mục S[0] S[1] S[2] S[3] S[4]
Bởi vì một ký tự có thể được truy cập theo chỉ mục, nên có thể sử dụng một vòng lặp biến để lặp lại tất cả các ký tự , sẽ nhận các giá trị chỉ mục có thể. Ví dụ, một chương trình hiển thị tất cả các mã ký tự của chuỗi s sẽ như sau: for (int i = 0; i < s.Length; i++) {   Console.WriteLine(s[i]); Console.WriteLine(Convert.ToInt32(s[i])); } Ghi chú chương trình:
1) s.Length tìm độ dài của một chuỗi. Chỉ số của ký tự đầu tiên là 0 và chỉ số của ký tự cuối cùng là s.Length-1. Biến vòng lặp i sẽ chỉ nhận giá trị tuần tự từ 0 đến 
s.Chiều dài-1;
2) trong mỗi dòng, biểu tượng sẽ được hiển thị trước, sau đó là mã của biểu tượng, có thể lấy mã này thông qua phương thức  Convert.ToInt32();

Phép liệt kê tương tự có thể được viết ngắn hơn:


foreach (char c in s)

    Bảng điều khiển.WriteLine(c);
    Console.WriteLine(Convert.ToInt32(c));
}
Trong đoạn mã này, tiêu đề vòng lặp lặp qua tất cả s ký tự, đặt từng cái một vào biến c. Điểm đặc biệt của C# khi làm việc với chuỗi là chuỗi là đối tượng bất biến. Nói cách khác, chúng ta không thể thay đổi các ký tự riêng lẻ của một chuỗi.
Ví dụ: câu lệnh sau sẽ không hoạt động:
s[5]=" ";