Chuỗi Ký Tự String Trong C Sharp
Có thể bạn quan tâm
- Chuỗi ký tự
- Chuỗi nguyên bản với @
- Chèn thêm biểu thức vào chuỗi với $
- Một số phương thức String
- StringBuilder
- Sử dùng biểu thức chính quy
string - chuỗi ký tự C#
Chuỗi ký tự thực tế ta đã làm việc với nó ở các ví dụ trước, chuỗi là một tập hợp các ký tự sắp xếp có vị trí, nó chỉnh là một mảng các ký tự, kiểu dữ liệu chuỗi đó là string, lớp biểu diễn các chuỗi là System.String
Bạn có thể khai báo, khởi tạo chuỗi với kiểu string, cũng như thực hiện các phép toán trên chuỗi...
string sExample = "Xin chào"; // Khai báo và khởi tạo chuỗi sExample += " các bạn"; // Nối chuỗi +=, trả về "Xin chào các bạn" sExample = sExample + "!"; // Nối chuỗi +, trả về "Xin chào các bạn!"Chuỗi như là mảng mà phần tử mảng là các ký tự, nên có thể truy cập phần tử mảng bằng indexer để đọc ký tự:
char c = sExample[1]; // c= 'i'Chuỗi nhập vào viết trong cặp nháy kép "", chèn vào chuỗi các ký tự đặc biệt ta dùng ký hiệu \: ví dụ \\ là ký tự \, \" là ký tự ", \n là ký tự xuống dòng, \r là ký tự về đầu dòng ...
Viết chuỗi nguyên bản với ký hiệu @ trong C#
Khi viết chuỗi trong cặp dấu nháy kép "", thì các ký tự đặt biệt được xử lý với ký hiệu \, ví dụ nếu bạn viết:
string s = "C:\\Abc\\xyz"; // Nếu viết string s = "C:\Abc\xyz"; sẽ lỗiThì nội dung thực tế của chuỗi là C:\Abc\xyz
Nếu muốn viết chuỗi cố định, nội dung nguyên bản - cho biết sẽ không dùng \ để xử lý ký tự đặc biệt, thì thêm @ vào đầu chuỗi:
string s = @"Ký tự \ được dùng để chèn ký tự đặc biệt như \n, \r";Bằng ký hiệu @ chuỗi viết thế nào thì nội dung thực tế sẽ như vậy, ngoại trừ hai ký tự "" chuyển thành một ký tự ""
string s = "Anh ấy nói, ""Đây là C#"""; //~ Anh ấy nói "Đây là C#"Ngoài ra bạn có thể viết chuỗi trên nhiều dòng với ký hiệu @
string s = @"Xin chào các bạn Tôi đang học C#";Chèn thêm biểu thức vào chuỗi với ký hiệu $ trong C#
Khi viết chuỗi có ký tự $ phía trước, thì trong chuỗi đó có thể chèn các biểu thức vào chỗ có cặp {} : {biểu-thức}
int a = 10; int b = 2; string s = $"Kết quả {a}/{b} là {a/b}"; // "Kết quả 10/2 là 5"Ngoài ra bạn có thể căn lề, định dạng số, ngày tháng ... tương tự như chuỗi định dạng
Console.WriteLine($"{"VòngLặp",10} {"Chẵn/Lẻ", -5}"); for (int i = 8; i < 15; i++) { string chanle = (i%2 == 0) ? "Chẵn" : "Lẻ"; Console.WriteLine($"{i,10} {chanle, -5}"); } Kết quả: VòngLặp Chẵn/Lẻ 8 Chẵn 9 Lẻ 10 Chẵn 11 Lẻ 12 Chẵn 13 Lẻ 14 ChẵnKý hiệu {i,10} là để ra một khoảng trống 10 ký tự, chèn giá trị i vào khoảng trống đó với căn lề bên phải. Ký hiệu {chanle, -5} là đề ra 5 khoảng trống chèn giá trị và căn lề trái.
Một số phương thức làm việc với chuỗi C#
Ví dụ có hai biến chuỗi, thực hiện một số phép toán:
string stringA = "Xin chào,"; string stringB = "các bạn!";method | Sử dụng |
---|---|
Concat | phương thức tĩnh, nối các chuỗi liệt kê ở tham số lại với nhau string s = String.Concat(stringA, stringB); // s = "Xin chào,các bạn!" |
Format | Convert các đối tượng thành chuỗi và chèn chúng vào chuỗi định dạng được chỉ ra, cú pháp cơ bản String.Format(stringFormat, arg0, arg1 ...) Trong đó stringFormat là chuỗi định dạng, chứa mẫu và và vị trí mà arg0, arg1 ... sẽ chèn vào. string s = String.Format("Chào {0}, {0} ơi, hôm nay ngày {1} rồi!", "Nam", DateTime.Now.Day); // s = "Chào Nam, Nam hôm nay ngày 20 rồi!"Nhìn vào, chuỗi định dạng chỗ nào có {0} sẽ được chèn bởi arg0("Nam"), chỗ nào có {1} sẽ được chèn bởi arg1 (20) Tại các vị trí cần chèn {} có thể định dạng dữ liệu chèn vào, chi tiết xem tại Formatting |
IndexOf | Tìm vị trí (đầu tiên) của ký tự hoặc chuỗi ký tự trong chuỗi |
LastIndexOf | Tìm vị trí (cuối) của ký tự hoặc chuỗi ký tự trong chuỗi |
Insert | Tạo chuỗi = chèn chuỗi này vào trong chuỗi khác, vị trí chèn cần chỉ ra var s = stringA.Insert(8, " tất cả"); // "Xin chào tất cả," |
PadLeft | Tạo chuỗi mới từ chuỗi cũ, độ dài chuỗi mới chỉ ra - nếu độ dài chuỗi mới lớn hơn chuỗi cũ thì các ký tự phía đầu được chèn khoảng trắng hoặc ký tự chỉ định. string s1 = "Abc"; string s2 = s1.PadLeft(6); // " Abc" string s3 = s1.PadLeft(6, '*'); // "***Abc" |
PadRight | Tương tự PadLeft nhưng chèn khoảng trắng bên phải |
Replace | Tìm và thay thế trong chuỗi var s = stringA.Replace("chào", "CHÀO"); // "Xin CHÀO," |
Split | Trả về mảng các chuỗi con được chia từ chuỗi gốc bởi ký tự chia chỉ định, chuỗi chia chỉ định var s = "Nguyễn Văn A".Split(' '); // s tương đương mảng {"Nguyễn","Văn", "A"} |
ToLower | Sinh chuỗi mới bằng cách chuyển các ký tự thành chữ thường |
ToUpper | Sinh chuỗi mới bằng cách chuyển các ký tự thành chữ in |
Trim | Sinh chuỗi mới bằng cách loại bỏ khoảng trắng (hoặc chỉ định) ở đầu và cuối |
Substring | Lấy ra chuỗi con từ chuỗi chính - chuỗi con lấy từ vị trí chỉ ra đến cuối hoặc theo độ dài string s = stringA.Substring(4); // s = "chào," string x = stringA.Substring(0, 3); // s = "Xin" (dài 3) |
Sử dụng StringBuilder
Khi sử dụng biến kiểu string để thực hiện các thao tác nhằm mục đích cuối cùng thu được chuỗi theo yêu cầu, trong quá trình đó bạn có thể sử dụng nhiều biến kiểu string, để phục vụ các phép toán như nối chuỗi, tìm kiếm, thay thế ... Mỗi khi khởi tạo một biến kiểu string, bạn đã cấp phát một lượng bộ nhớ để lưu trữ chuỗi - thường thì bộ nhớ này nhiều hơn những gì bạn cần.
Để thi hành tối ưu hơn về tốc độ, về sử dụng bộ nhớ có thể dùng tới đối tượng StringBuilder ở namespace System.Text (thêm vào đầu file using System.Text;)
StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("Xin chào các bạn - xuanthulab.net"); stringBuilder.Replace("Xin chào", "XIN CHÀO"); Console.WriteLine(stringBuilder); // Out: XIN CHÀO các bạn - xuanthulab.netMột số phương thức khi sử dụng StringBuilder
method | Sử dụng |
---|---|
Append | Nối một đối tượng (chuỗi, số ...) vào StringBuilder |
AppendFormat | Nối vào một chuỗi sinh ra theo StringFormat |
Insert | Chèn vào StringBuilder một chuỗi ở vị trí chỉ ra |
Remove | Loại bỏ một lượng ký tự, bắt đầu từ vị trí do chỉ định |
Replace | Tìm và thay thế |
ToString | Trả về chuỗi (String) |
Dùng biểu thức chính quy với chuỗi trong C#
Khi làm việc với chuỗi, những tác vụ phức tạp muốn nhanh chóng có thể áp dụng kỹ thuật biểu thức chính quy vì C# hỗ trợ các lớp để làm việc với RegExp (regularexpressions), phần này trình bày ở một bài riêng
Ví dụ xây dựng lại hàm tìm kiếm địa chỉ email có trong một văn bản, ví dụ này đã từng xây dựng trong PHP: RegEx tìm email
String text = @"Đây là địa chỉ email userabcguest@xuanthulab.net.vn và xyz@gmail.com cần trích xuất"; String pattern = @"(([^\s.]+)@((.[^\s]+)(\..[^\s]+)))"; Regex rx = new Regex(pattern); // Tìm kiếm. MatchCollection matches = rx.Matches(text); // In thông báo tìm kiếm. Console.WriteLine("Tìm thấy {0} email trong:\n\n {1}\n\n", matches.Count, text); // Xuất kết quả email tìm được foreach (Match match in matches) { GroupCollection groups = match.Groups; Console.WriteLine("{0}", groups[0].Value); }Kết quả chạy
Tìm thấy 2 email trong: Đây là địa chỉ email userabcguest@xuanthulab.net.vn và xyz@gmail.com cần trích xuất userabcguest@xuanthulab.net.vn xyz@gmail.comMã nguồn CS012_String(Git), hoặc tải ex012-1
Mục lục bài viết Chuỗi ký tựChuỗi nguyên bản với @Chèn thêm biểu thức vào chuỗi với $Một số phương thức StringStringBuilderSử dùng biểu thức chính quy ĐĂNG KÝ KÊNH, XEM CÁC VIDEO TRÊN XUANTHULAB Đăng ký nhận bài viết mớiTừ khóa » Tách Từng Ký Tự Trong Chuỗi C#
-
Tách Từng Ký Tự Trên C# Như Thế Nào? - Cộng đồng C Việt
-
Tổng Hợp Các Hàm Xử Lý Chuỗi Trong Lập Trình C# » Chia Sẻ để Vui Vẻ
-
String Trong C# Part 2. Tách Chuỗi Về Mảng - YouTube
-
Các Hàm Xử Lý Chuỗi Trong C#, Xử Lý Chuỗi Căn Bản Trong C# - Itseovn
-
Tách Kí Tự Xuống Dòng Ra Khỏi Chuỗi Và Chỉ Lấy Số Trong Chuỗi.
-
Kiểu Chuỗi Ký Tự Trong C#, Lớp String Và StringBuilder
-
Tách Các Từ Trong Chuỗi [Archive] - Diễn Đàn Tin Học
-
Hàm Split Trong Power Apps - Microsoft Docs
-
Phương Thức Xử Lý Chuỗi Nâng Cao - C# - Hanoi Aptech
-
Cắt Chuỗi Trong C++ - Thu Trang
-
[C#] Hướng Dẫn Tách Một Chuỗi Thông Qua Một Chuỗi Con
-
Hỏi Cách Phân Tích Chuỗi Thành Mảng Các Ký Tự Trong Java
-
Java - Tách Các Từ Có Trong Chuỗi Và Hiển Thị Mỗi Từ Trên 1 Dòng.
-
Chuỗi (String) Trong C#
-
C# — Làm Cách Nào để Tách Các Ký Tự Không Chữ Và Số (bao Gồm ...
-
[C#] Hướng Dẫn Cắt Chuỗi LEFT, MID, RIGHT Dùng Hàm Substring ...
-
Java: Hàm Xử Lý Chuỗi (String) | V1Study