答えてくれてありがとうジムですが、Mono Project のように正規化クラスを実装しようとしましたが、ある時点で、単純であるべきものにあまりにも多くの依存関係が関係しているため、やり過ぎであることに気付きました。
私はこの単純な実装を思いつきました...それは完璧ではありません.(これはすべての言語で機能するとは限りません).
<System.Runtime.CompilerServices.Extension()> _
Public Function RemoveDiacritics(ByVal searchInString As String) As String
Dim returnValue As String = ""
returnValue = searchInString
returnValue = returnValue.ReplaceLowerAndUpperCase("À", "A")
returnValue = returnValue.ReplaceLowerAndUpperCase("Á", "A")
returnValue = returnValue.ReplaceLowerAndUpperCase("Â", "A")
returnValue = returnValue.ReplaceLowerAndUpperCase("Ã", "A")
returnValue = returnValue.ReplaceLowerAndUpperCase("Ä", "A")
returnValue = returnValue.ReplaceLowerAndUpperCase("Å", "A")
returnValue = returnValue.ReplaceLowerAndUpperCase("Æ", "A")
returnValue = returnValue.ReplaceLowerAndUpperCase("Ç", "C")
returnValue = returnValue.ReplaceLowerAndUpperCase("È", "E")
returnValue = returnValue.ReplaceLowerAndUpperCase("É", "E")
returnValue = returnValue.ReplaceLowerAndUpperCase("Ê", "E")
returnValue = returnValue.ReplaceLowerAndUpperCase("Ë", "E")
returnValue = returnValue.ReplaceLowerAndUpperCase("Ì", "I")
returnValue = returnValue.ReplaceLowerAndUpperCase("Í", "I")
returnValue = returnValue.ReplaceLowerAndUpperCase("Î", "I")
returnValue = returnValue.ReplaceLowerAndUpperCase("Ï", "I")
returnValue = returnValue.ReplaceLowerAndUpperCase("Ñ", "N")
returnValue = returnValue.ReplaceLowerAndUpperCase("Ò", "O")
returnValue = returnValue.ReplaceLowerAndUpperCase("Ó", "O")
returnValue = returnValue.ReplaceLowerAndUpperCase("Ô", "O")
returnValue = returnValue.ReplaceLowerAndUpperCase("Õ", "O")
returnValue = returnValue.ReplaceLowerAndUpperCase("Ö", "O")
returnValue = returnValue.ReplaceLowerAndUpperCase("Ù", "U")
returnValue = returnValue.ReplaceLowerAndUpperCase("Ú", "U")
returnValue = returnValue.ReplaceLowerAndUpperCase("Û", "U")
returnValue = returnValue.ReplaceLowerAndUpperCase("Ü", "U")
returnValue = returnValue.ReplaceLowerAndUpperCase("Ý", "Y")
returnValue = returnValue.ReplaceLowerAndUpperCase("Æ", "AE")
returnValue = returnValue.ReplaceLowerAndUpperCase("Œ", "OE")
Return returnValue
End Function
<System.Runtime.CompilerServices.Extension()> _
Public Function ReplaceLowerAndUpperCase(ByVal searchInString As String, ByVal oldString As String, ByVal newString As String) As String
Dim returnValue As String = ""
returnValue = searchInString.Replace(oldString.ToLower, newString.ToLower)
returnValue = returnValue.Replace(oldString.ToUpper, newString.ToUpper)
Return returnValue
End Function