Chuẩn hóa xâu làm một việc làm tất yếu trong lập trình. Vì vậy trong bài viết này, mình sẽ liệt kê các phương thức để chuẩn hóa xâu trong C#. Chi tiết về các phương thức này mình sẽ trình bày ngay sau đây.
Các phương thức dùng để chuẩn hóa xâu ký tự
Phương thức Replace
Dịch từ tiếng anh ra “replace” có nghĩa là thay thế, vì vậy nó cũng là tên một phương thức để có thể thay thế các ký tự của một chuỗi ký tự trong C#. Cú pháp sử dụng phương thức Replace này như sau:
<chuỗi ký tự>.Replace(<ký tự hoặc chuỗi bị thay thế>, <ký tự hoặc chuỗi thay thế>);
Lưu ý: <chuỗi ký tự>
là giá trị kiểu string
được đặt nằm trong cặp nháy kép ""
còn <ký tự bị thay thế>
và <ký tự thay thế>
là 2 giá trị kiểu ký tự được đặt trong cặp nháy đơn ''
.
Phương này này trả về một chuỗi ký tự mới sau khi đã thay đổi tất cả các ký tự ở ô <ký tự bị thay thế>
xuất hiện trong chuỗi ký tự thành <ký tự thay thế>
.
Ví dụ về phương thức Replace:
using System.IO; using System; namespace luyencodec_ { class Program { static void Main() { string a = "Lap trinh khong kho"; a = a.Replace(' ', '_'); Console.WriteLine(a); Console.ReadKey(); // dừng màn hình } } }
Chương trình này cho ra kết quả:
Lap_trinh_khong_kho
Nhìn vào chương trình có thể thấy giá trị của chuỗi ký tự a
sau khi mình sử dụng phương thức Replace nhằm thay thế tất cả các ký tự mang dấu cách thành ký tự '_'
các bạn có thể dễ dàng nhìn thấy ở kết quả của chương trình.
Phương thức Remove
Phương thức này ngược lại với phương thức Substring. Thay vì lấy ra chuỗi ký tự con từ vị trí x tới y ký tự tiếp theo thì ở đây phương thức Remove sẽ loại bỏ chuỗi ký tự từ vị trí x tới y ký tự tiếp theo sao đó trả về một chuỗi mới sau khi thực hiện phương thức. Cú pháp sử dụng như sau:
<chuỗi ký tự>.Remove(<vị trí bắt đầu>, <số lượng ký tự>);
Ví dụ cho phương thức này:
using System.IO; using System; namespace luyencodec_ { class Program { static void Main() { string a = "Lap trinh khong kho"; a = a.Remove(9, 6); Console.WriteLine(a); Console.ReadKey(); // dừng màn hình } } }
Chương trình cho ra kết quả:
Lap trinh kho
Dễ dàng thấy rằng phương thức đã loại bỏ hoàn toàn các ký tự từ vị trí số 9 tới 5 ký tự tiếp theo.
Phương thức IndexOf và LastIndexOf
Phương thức IndexOf được sử dụng để tìm kiếm một vị trí của chuỗi ký tự được đưa vào bên trong nó. Phương thức này trả về một số nguyên là vị trí của chuỗi ký tự cần tìm, ngược lại trong trường hợp không tìm thấy chuỗi ký tự đó phương thức trả về kết quả là -1
. Cú pháp sử dụng như sau:
<chuỗi ký tự>.IndexOf(<ký tự hoặc chuỗi cần tìm>);
Ví dụ sử dụng phương thức IndexOf:
using System.IO; using System; namespace luyencodec_ { class Program { static void Main() { string a = "Lap trinh khong kho"; Console.WriteLine(a.IndexOf("Lap")); Console.WriteLine(a.IndexOf("Hieu")); Console.ReadKey(); // dừng màn hình } } }
Chương trình này cho ra kết quả:
0 -1
Khi mình tìm vị trí của từ "Lap"
qua phương thức IndexOf thì chương trình cho ra kết quả là 0 vì từ này nằm ở vị trí đầu tiên trong chuối ký tự nên vị trí đầu tiên phải là 0. Tiếp theo đó. Mình tìm kiếm chữ "Hieu"
trong chuỗi ký tự a
nhưng chương trình cho ra kết quả -1 vì không tìm thấy từ "Hieu"
nào trong chuỗi ký tự trên.
Tương tự như vậy đối với phương thức LastIndexOf. Phương thức này sẽ trả về vị trí cuối cùng mà chuỗi ký tự hay ký tự cần tìm kiếm xuất hiện trong chuỗi ký tự cần tìm kiếm. Cú pháp y hệt như phương thức IndexOf:
<chuỗi ký tự>.LastIndexOf(<ký tự hoặc chuỗi ký tự cần tìm>);
Các bạn hãy thử tự thực hành với phương thức này nhé !
Phương thức ToUpper và ToLower
Nghe tên cũng biết 2 phương thức này để làm gì. Hai phương thức này lần lượt được dùng để chuyển chuỗi ký tự thành dạng viết hoa và chuyển chuỗi ký tự thành dạng viết thường. Cú pháp sử dụng như sau:
<chuỗi ký tự>.ToUpper(); <chuỗi ký tự>.ToLower();
Ví dụ về 2 phương thức này:
using System.IO; using System; namespace luyencodec_ { class Program { static void Main() { string a = "LAP TRINH KHONG KHO"; string b = "iwannabetheguy"; Console.WriteLine(a.ToLower()); Console.WriteLine(b.ToUpper()); Console.ReadKey(); // dừng màn hình } } }
Chương trình cho ra kết quả:
lap trinh khong kho IWANNABETHEGUY
Chúng ta hoàn toàn có thể nhìn thấy các chuỗi ký tự khi dùng 2 phương thức trên tạo ra một chuỗi ký tự chỉ viết thường và một chuỗi ký tự chỉ viết hoa.
Phương thức Trim
Phương thức này nghe tên thì có vẻ đen tối. Nhưng thực ra phương thức này giúp các bạn có thể đỡ tốn công viết hàm loại bỏ các dấu cách thừa ở đầu và ở cuối của một chuỗi ký tự. Cú pháp cụ thể như sau:
<chuỗi ký tự>.Trim();
Phương thức này không quá khó để các bạn có thể tự thực hành đúng không nào ?
Chuẩn hóa xâu ký tự trong C#
Chuẩn hóa xâu (chuỗi ký tự) là một việc làm cần thiết trong việc lập trình khi bạn làm việc với dữ liệu người dùng, giả sử nhỡ người dùng viết sai kiểu tên mà bạn cần. Dưới đây là chương trình dùng để chuẩn hóa xâu ký tự trong C#. Đối với từng đoạn code mình đã cố gắng comment lại cho các bạn dễ hiểu hơn.
using System; namespace luyencodec_ { class Program { static void Main(String[] args) { Console.Write("Nhap ten cua ban: "); string name = Console.ReadLine(); name = name.Trim(); // loại bỏ các dấu cách thừa ở đầu và cuối name = name.ToLower(); // đưa tất cả các ký tự về dạng viết thường cho dễ kiểm soát while (name.IndexOf(" ") != -1) // kiểm tra xem có dấu 2 dấu cách nào liền nhau hay không { // thực hiện câu lệnh trong vòng lặp này chứng tỏ là có 2 dấu cách liền nhau name = name.Remove(name.IndexOf(" "), 1); // loại bỏ đi 1 trong 2 dấu cách } // tiếp theo đó là viết hoa lên vị trí phân tách tên string[] s = name.Split(' '); // tách các từ bởi dấu cách để xử lý viết hoa dễ hơn string afterFormat = ""; // biến lưu trữ lại chuỗi ký tự sau khi chuẩn hóa for (int i = 0; i < s.Length; ++i) // thực hiện lặp lên toàn bộ các phần tử sau khi phân tách { string first = s[i].Substring(0, 1); // lấy ra ký tự đầu tiên của từ đó string another = s[i].Substring(1, s[i].Length - 1); // lấy ra chuỗi ký tự tính từ sau chữ cái đầu tiên // tạo thành chuỗi ký tự sau khi viết hoa chữ cái đầu tiên và1 dấu cách cho việc chuẩn hóa các từ sau afterFormat += first.ToUpper() + another + " "; } afterFormat = afterFormat.Remove(afterFormat.LastIndexOf(' '), 1); // xóa đi dấu cách thừa ở cuối khi thực hiện vòng lặp trên // Ở đây mình dùng thêm 2 dấu | để khi in ra chắc chắn rằng dấu cách thừa đã bị xóa Console.WriteLine("Ten sau khi chuan hoa: |{0}|", afterFormat); // xuất kết quả ra màn hình Console.ReadKey(); // dừng màn hình } } }
Giả sử chúng ta nhập vào chương trình chuỗi " ngUYen vAn HieU "
thì chương trình cho ra kết quả:
Nhap ten cua ban: ngUYen vAn HieU Ten sau khi chuan hoa: |Nguyen Van Hieu|
Tổng kết
Như vậy là trong 2 bài mình đã trình bày cho các bạn hầu hết tất cả các phương thức của lớp String trong C#. Sang bài học tiếp theo cũng là chương mới trong khóa học chúng ta sẽ bắt đầu tìm hiểu về hàm trong C#. Cảm ơn bạn đã đọc bài viết này. Hãy tiếp tục đồng hành cùng Lập trình không khó trong các bài viết tiếp theo nhé !
(ngoài ra các bạn cũng có thể thử sức với các bài tập sau đây)
Để lại một bình luận