相关疑难解决方法(0)

如何从.NET中的字符串中删除变音符号(重音符号)?

我正在尝试转换一些法语加拿大语的字符串,基本上,我希望能够在保留字母的同时取出字母中的法语重音符号.(例如转换ée,所以crème brûlée会变成creme brulee)

实现这一目标的最佳方法是什么?

.net string diacritics

415
推荐指数
13
解决办法
18万
查看次数

将元数据添加到CloudBlob时无效的字符异常

任务

上传文件到Azure Blob Storage与原来的文件名,并指定文件名作为meta-dataCloudBlob

问题

这些字符是不允许的,meta-data但可以接受为blob名称:

š Š ñ Ñ ç Ç ÿ Ÿ ž Ž Ð œ Œ « » éèëêð ÉÈËÊ àâä ÀÁÂÃÄÅ àáâãäå ÙÚÛÜ ùúûüµ òóôõöø ÒÓÔÕÖØ ìíîï ÌÍÎÏ
Run Code Online (Sandbox Code Playgroud)

  • 有没有办法将这些字符存储在meta-data?我们是否遗漏了一些导致此异常的设置?
  • 这些字符中的大多数是某些语言中的标准字形,那么如何处理呢?
  • 是否有任何文件可以提供有关此问题的建议?我发现blobmeta-data命名约定,但没有关于数据本身!

var dirtyFileName      = file.FileName;
var normalizedFileName = file.FileName.CleanOffDiacriticAndNonASCII();

// Blob name accepts almost characters that are acceptable as filenames in Windows
var blob = container.GetBlobReference(dirtyFileName);

//Upload content to …
Run Code Online (Sandbox Code Playgroud)

character-encoding azure azure-storage azure-storage-blobs

14
推荐指数
3
解决办法
7173
查看次数

将两个ascii字符转换为它们的"对应"一个字符扩展ascii表示

问题:我有两个来自外部系统的固定宽度字符串.第一个包含基本字符(如az),第二个(MAY)包含要附加到第一个字符串以创建实际字符的变音符号.

string asciibase = "Dutch has funny chars: a,e,u";
string diacrits  = "                       ' \" \"";

//no clue what to do

string result = "Dutch has funny chars: á,ë,ü";
Run Code Online (Sandbox Code Playgroud)

我可以写一个大规模的搜索并替换所有字符+不同的变音符号,但希望更优雅的东西.

有人知道如何解决这个问题吗?尝试计算小数值,使用string.Normalize(c#),但没有结果.谷歌也没有真正想出办法.

c# ascii localization extended-ascii

6
推荐指数
2
解决办法
3375
查看次数

将非 ascii 多文化字符转换为等效的简化字母数字字符

我在使用 unicode 字符搜索文件名时遇到问题。这些文件可能具有正确或更改的名称(替换为等效的 ascii 字符)。\n我想编写一些代码来查找使用相同单词(无论更改与否)的文件,并且同一字符串内可能存在不连贯的文化混合。\n为了保留它简单,我应该只管理欧洲语言的字符串。

\n\n

等价示例:

\n\n
\xc6\x90psilon <=> epsilon\nK\xc3\xb8benhavn <=> Kobenhavn\n\xc3\x85ngstr\xc3\xb6m <=> Angstrom\nEl Ni\xc3\xb1o <=> El Nino\nTi\xe1\xba\xbfng Vi\xe1\xbb\x87t <=> Tieng Viet\n\xc4\x8ce\xc5\xa1tina <=> Cestina\nencyklop\xc3\xa6di <=> encyklopaedi\nExpedi\xc8\x9bia <=> Expeditia\n\xc3\xb8\xc3\xb0rum <=> odrum\n\xc5\x93uf <=> oeuf\n\xce\xbc (\\u03bc) <=> \xc2\xb5 (\\u00b5)\nStra\xc3\x9fe <=> Strasse\n
Run Code Online (Sandbox Code Playgroud)\n\n

我已经找到了类似问题的一些答案,但它们基于更简单的字符串(其中删除重音就足够了,使用 Unicode 规范化和删除变音符号),或基于“自己动手”。

\n\n

如何比较“看起来相似”的 Unicode 字符?

\n\n

如何将 Unicode 字符转换为其等效的 ASCII 字符

\n\n

替换 C# 中的字符 (ascii)

\n\n

不幸的是,Unicode 规范化(自动方式)至少对以下字符不起作用:

\n\n
\xc6\x90 \xc3\xb8 \xc3\xb0 => missing equivalence\n\xc3\xa6 \xc5\x93 \xc3\x9f => missing expansion\n
Run Code Online (Sandbox Code Playgroud)\n\n

除了我自己手动转换每个“众所周知”字符之外,是否有一个函数/库可以在 C# 中实现此目的?

\n

c# unicode ascii

6
推荐指数
1
解决办法
3061
查看次数

在Silverlight中删除变音符号(String.Normalize issue)

我创建了一个函数,将变音字符转换为非变音字符(基于这篇文章)

这是代码:

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
Run Code Online (Sandbox Code Playgroud)

不幸的是,由于String.Normlize不是Silverlight的一部分,我需要找到另一种编写此函数的方法.

到目前为止我找到的唯一解决方案是在服务器端创建一个服务,该服务将调用String.Normalize函数,然后将其返回给客户端...但这会产生巨大的性能问题.

必须有一个更好的选择但正确知道我不知道如何解决这个问题.

string silverlight normalize diacritics

5
推荐指数
1
解决办法
1682
查看次数