> 백엔드 개발 > C++ > 악센트 캐릭터를 무시하면서 C#의 문자열을 어떻게 비교할 수 있습니까?

악센트 캐릭터를 무시하면서 C#의 문자열을 어떻게 비교할 수 있습니까?

Linda Hamilton
풀어 주다: 2025-01-24 16:07:10
원래의
489명이 탐색했습니다.

How Can I Compare Strings in C# While Ignoring Accented Characters?

C#에서 문자열을 비교할 때 악센트 문자 무시

C#에서는 악센트 부호가 있는 문자로 문자열 비교를 처리하는 것이 까다로울 수 있습니다. 다음 예를 고려해보세요.

<code class="language-csharp">string s1 = "hello";
string s2 = "héllo";

s1.Equals(s2, StringComparison.InvariantCultureIgnoreCase);
s1.Equals(s2, StringComparison.OrdinalIgnoreCase);</code>
로그인 후 복사

두 문자열은 동일해야 하지만 두 문 모두 false를 반환합니다. 이는 문자의 악센트가 다른 문자로 취급되기 때문입니다. 이 문제를 해결하기 위해 문자열을 비교하기 전에 추가 기호(또는 악센트)를 제거하는 기술을 사용할 수 있습니다.

추가 기호 제거

문자열에서 추가 기호를 제거하는 방법은 다음과 같습니다.

<code class="language-csharp">static string RemoveDiacritics(string text)
{
    // 将字符串规范化为 Unicode 规范化形式 D
    string formD = text.Normalize(NormalizationForm.FormD);

    // 创建一个 StringBuilder 来保存结果字符串
    StringBuilder sb = new StringBuilder();

    // 迭代规范化字符串中的字符
    foreach (char ch in formD)
    {
        // 检查字符是否不是非间隔标记
        UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(ch);
        if (uc != UnicodeCategory.NonSpacingMark)
        {
            // 将字符附加到 StringBuilder
            sb.Append(ch);
        }
    }

    // 将 StringBuilder 转换为字符串并将其规范化为 Unicode 规范化形式 C
    return sb.ToString().Normalize(NormalizationForm.FormC);
}</code>
로그인 후 복사

이 방법은 먼저 문자열을 D 형식으로 정규화하여 악센트 부호가 있는 문자를 여러 문자로 분할합니다. 그런 다음 이러한 문자를 반복하고 공백이 없는 토큰(예: 악센트)을 필터링합니다. 마지막으로 나머지 문자를 다시 결합하여 악센트가 없는 문자열을 형성합니다.

이 방법을 사용하려면 비교하기 전에 두 문자열에 적용하면 됩니다. 예:

<code class="language-csharp">string s1 = "hello";
string s2 = "héllo";

s1.Equals(RemoveDiacritics(s2), StringComparison.InvariantCultureIgnoreCase);  // True</code>
로그인 후 복사

"héllo"에서 악센트가 있는 "e"가 "hello"에서 악센트가 없는 "e"와 동일하다는 점을 고려하면 이는 true로 올바르게 평가됩니다.

위 내용은 악센트 캐릭터를 무시하면서 C#의 문자열을 어떻게 비교할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿