silverlight - 删除 Silverlight 中的变音符号(String.Normalize 问题)

标签 silverlight string diacritics normalize

我确实创建了一个将变音符号字符转换为非变音符号字符的函数(基于此 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 函数,然后将其返回给客户端……但这会产生巨大的性能问题。

必须有更好的选择,但我知道我不知道如何解决这个问题。

最佳答案

西蒙,

这是 Normalize() 的一个基本实现,调用一个 Normalization 类:

public string Normalize ()
{
    return Normalization.Normalize (this, 0);
}

public string Normalize (NormalizationForm normalizationForm)
{
    switch (normalizationForm)
    {
        default:
            return Normalization.Normalize (this, 0);
        case NormalizationForm.FormD:
            return Normalization.Normalize (this, 1);
        case NormalizationForm.FormKC:
            return Normalization.Normalize (this, 2);
        case NormalizationForm.FormKD:
            return Normalization.Normalize (this, 3);
    }
}

您可以从 GitHub 上的 Mono 项目浏览 Normalization 类的实现:

http://github.com/mono/mono/blob/mono-2.6.4/mcs/class/corlib/Mono.Globalization.Unicode/Normalization.cs

祝你好运,
吉姆·麦柯迪

关于silverlight - 删除 Silverlight 中的变音符号(String.Normalize 问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4046937/

相关文章:

silverlight - Caliburn.Micro 基于约定的绑定(bind)在嵌套 View 中不起作用?

c# - 具有多个 ColorAnimations 的 Silverlight Storyboard

encoding - 将带变音符号的 NSString 转换为 const char *

c# - 从字符串值中获取非数值 c#

string - 如何使用变音符号从 JSP 页面正确解释参数

encoding - Twitter 与变音符号 ä 和 ö 的共享问题

silverlight - WCF Silverlight 服务返回自定义错误,但作为 HTTP 500 响应而不是 200

c# - 在派生类中通过 .NET 反射调用 protected 泛型方法

java - 在字符串中的某些字母之前/之后插入短语

c - strtok() 作为 printf() 中的参数反向打印值