Cách chuyển đổi chữ cái Unicode có dấu thành không dấu trong C#

Hướng dẫn chi tiết cách chuyển đổi các ký tự Unicode có dấu tiếng Việt thành ký tự không dấu bằng C#.

Trong bài viết này, bạn sẽ học cách chuyển đổi một chuỗi có dấu tiếng Việt sang chuỗi không dấu trong C#. Điều này hữu ích khi bạn cần xử lý văn bản tiếng Việt hoặc tạo URL thân thiện hơn.

Mã C#:

using System;
using System.Globalization;
using System.Text;
using System.Text.RegularExpressions;

public class Program
{
    public static string RemoveDiacritics(string text)
    {
        // Chuyển chuỗi thành dạng chuẩn Unicode
        string normalizedString = text.Normalize(NormalizationForm.FormD);
        
        // Lọc bỏ các ký tự không phải ký tự Latin cơ bản
        StringBuilder stringBuilder = new StringBuilder();
        foreach (char c in normalizedString)
        {
            UnicodeCategory unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c);
            if (unicodeCategory != UnicodeCategory.NonSpacingMark)
            {
                stringBuilder.Append(c);
            }
        }
        
        // Chuẩn hóa lại chuỗi và trả về kết quả
        return stringBuilder.ToString().Normalize(NormalizationForm.FormC);
    }
    
    public static void Main(string[] args)
    {
        string originalText = "Chào mừng bạn đến với thế giới lập trình C#!";
        string result = RemoveDiacritics(originalText);
        
        Console.WriteLine("Chuỗi gốc: " + originalText);
        Console.WriteLine("Chuỗi không dấu: " + result);
    }
}

Giải thích chi tiết từng dòng code:

  1. using System;, using System.Globalization;, using System.Text;, using System.Text.RegularExpressions;: Import các thư viện cần thiết để xử lý chuỗi, Unicode và loại bỏ dấu.
  2. string normalizedString = text.Normalize(NormalizationForm.FormD);: Chuyển chuỗi sang dạng chuẩn Unicode FormD, tách các dấu ra khỏi ký tự.
  3. foreach (char c in normalizedString): Duyệt qua từng ký tự của chuỗi chuẩn hóa.
  4. CharUnicodeInfo.GetUnicodeCategory(c): Lấy thông tin loại Unicode của ký tự.
  5. if (unicodeCategory != UnicodeCategory.NonSpacingMark): Kiểm tra xem ký tự có phải là dấu không. Nếu không phải, thêm vào stringBuilder.
  6. return stringBuilder.ToString().Normalize(NormalizationForm.FormC);: Trả về chuỗi đã loại bỏ dấu và chuẩn hóa lại về FormC.

Yêu cầu hệ thống:

  • .NET Core 3.1 trở lên hoặc .NET Framework 4.5 trở lên
  • Visual Studio hoặc .NET CLI

Cách cài đặt:

  • Cài đặt Visual Studio hoặc .NET SDK từ trang chủ của Microsoft.

Lời khuyên:

  • Khi xử lý văn bản tiếng Việt, sử dụng phương pháp này để chuyển đổi các chuỗi có dấu thành không dấu sẽ giúp việc tìm kiếm, so sánh và tạo URL thân thiện hơn.

Các Hướng Dẫn Cùng Chủ Đề Đang Xem

Cách POST dữ liệu tới API bằng C#

Hướng dẫn cách gửi dữ liệu tới một API bằng phương thức POST trong C# sử dụng lớp HttpClient, giúp bạn dễ dàng thực hiện các yêu cầu với API.
Tổng hợp tất cả các cách nối chuỗi trong C#

Hướng dẫn chi tiết về tất cả các cách nối chuỗi trong C#, bao gồm sử dụng toán tử nối chuỗi, phương thức nối chuỗi, và các cách tiếp cận hiệu quả khác.
Hướng dẫn đọc nội dung file Excel bằng C#

Hướng dẫn chi tiết cách đọc nội dung từ file Excel (.xlsx, .xls) bằng C#, sử dụng thư viện EPPlus với các bước cài đặt và ví dụ minh họa cụ thể.
Cách GET dữ liệu JSON từ API bằng C#

Hướng dẫn cách lấy dữ liệu JSON từ một API bằng C#, sử dụng lớp HttpClient và thư viện Newtonsoft.Json để xử lý dữ liệu.
Cách ẩn ứng dụng C# khỏi Task Manager

Hướng dẫn cách ẩn ứng dụng C# khỏi Task Manager bằng cách sử dụng Win32 API để điều chỉnh thuộc tính hiển thị của ứng dụng.
Cách ghi nội dung vào file Excel trong C#

Hướng dẫn chi tiết cách ghi nội dung vào file Excel trong C# bằng cách sử dụng thư viện EPPlus, giúp bạn dễ dàng lưu trữ và quản lý dữ liệu trong các bảng tính Excel.
Chuyển chuỗi markdown sang HTML bằng C#

Hướng dẫn cách chuyển đổi chuỗi markdown thành HTML trong C# bằng cách sử dụng thư viện MarkdownSharp.
Gửi đoạn mã JavaScript vào website bằng Selenium trong C#

Hướng dẫn cách sử dụng Selenium trong C# để gửi một đoạn mã JavaScript vào một website mở trong trình duyệt Chrome. Bài viết sẽ cung cấp mã mẫu và giải thích chi tiết từng bước.
Chức năng thường dùng khi sử dụng Selenium Chrome trong C#

Bài viết này sẽ liệt kê và mô tả các chức năng thường dùng khi sử dụng Selenium Chrome trong C#. Những chức năng này giúp bạn tự động hóa các tác vụ trên trình duyệt Chrome một cách hiệu quả.
Cách UPDATE dữ liệu từ database MySQL bằng C#

Hướng dẫn cách sử dụng Prepared Statements trong C# để cập nhật dữ liệu trong bảng MySQL một cách an toàn và hiệu quả với nhiều tham số.

Đã thêm vào giỏ hàng