Я создал функцию, которая преобразует диакритические символы в недиакритические символы (на основе этого post)
Вот код:
Public Function RemoveDiacritics(ByVal searchInString As String) As String
Dim returnValue As String = ""
Dim formD As String = searchInString.Normalize(System.Text.NormalizationForm.FormD)
Dim unicodeCategory As System.Globalization.UnicodeCategory = Nothing
Dim stringBuilder As New System.Text.StringBuilder()
For formScan As Integer = 0 To formD.Length - 1
unicodeCategory = System.Globalization.CharUnicodeInfo.GetUnicodeCategory(formD(formScan))
If unicodeCategory <> System.Globalization.UnicodeCategory.NonSpacingMark Then
stringBuilder.Append(formD(formScan))
End If
Next
returnValue = stringBuilder.ToString().Normalize(System.Text.NormalizationForm.FormC)
Return returnValue
End Function
К сожалению, поскольку String.Normlize не является частью Silverlight, мне нужно найти другой способ записи этой функции.
Единственное решение, которое я нашел до сих пор, - создать службу на стороне сервера, которая вызовет функцию String.Normalize, а затем вернет ее на клиентскую сторону... но это создаст огромную проблему с производительностью.
Должна быть лучшая альтернатива, но я знаю, что не знаю, как исправить эту проблему.