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:
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.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ự.foreach (char c in normalizedString)
: Duyệt qua từng ký tự của chuỗi chuẩn hóa.CharUnicodeInfo.GetUnicodeCategory(c)
: Lấy thông tin loại Unicode của ký tự.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àostringBuilder
.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.