C#では、同じスペルがあるが、異なる応力を持つ文字列は通常、異なるエンティティと見なされます。これは、文字列の文字列を無視する必要がある場合に課題をもたらす可能性があります。 この問題を解決するために、
関数は入力文字列をに特異的に標準化し、すべての非インターバルマークを削除して、文字内のすべての応力記号を効果的に削除しました。次に、生成された文字列を
に指定して、元のAppleの感度を回復します。
RemoveDiacritics
NormalizationForm.FormD
この関数は、応力文字(「é」など)を対応する効果(「e」など)に効果的に変換します。 とNormalizationForm.FormC
を使用することにより、ストレッチマークを削除しながら、または小文字の感度を維持できます。
<code class="language-csharp">static string RemoveDiacritics(string text) { string formD = text.Normalize(NormalizationForm.FormD); StringBuilder sb = new StringBuilder(); foreach (char ch in formD) { UnicodeCategory uc = CharUnicodeInfo.GetUnicodeCategory(ch); if (uc != UnicodeCategory.NonSpacingMark) { sb.Append(ch); } } return sb.ToString().Normalize(NormalizationForm.FormC); }</code>
この例では、アクセントシンボルが考慮されない場合、S1とS2は異なると見なされます。ただし、応力記号を削除した後、S1NodiacriticsとS2Nodiacriticsは同じになり、Trueの比較結果が得られました。 NormalizationForm.FormD
以上がアクセントを無視しながら、C#の文字列を比較するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。