【发布时间】:2010-04-09 09:24:41
【问题描述】:
我需要一些功能来以对 url 友好的格式制作以下字符串: “knæ som gør”应该是“kna-som-gor”
也就是说,将特定文化的字符替换为可以在 url 中使用的字符。
使用 .Net 和 C#
请帮帮我:)
/安德烈亚斯
【问题讨论】:
标签: c# regex character culture
我需要一些功能来以对 url 友好的格式制作以下字符串: “knæ som gør”应该是“kna-som-gor”
也就是说,将特定文化的字符替换为可以在 url 中使用的字符。
使用 .Net 和 C#
请帮帮我:)
/安德烈亚斯
【问题讨论】:
标签: c# regex character culture
不要把事情复杂化。 :)
要么使用正则表达式,要么直接使用String.Replace。
【讨论】:
您可以在此处找到删除变音符号的解决方案:How do I remove diacritics (accents) from a string in .NET?。不过,此解决方案对 æ 或 ø 没有帮助。
也许这会删除足够多的特殊字符,以便使用简单的替换来翻译其余字符?
如果“url-friendly”并不意味着漂亮,你也可以使用 HttpUtility.UrlEncode,它会产生 “kn%c3%a6+som+g%c3%b8r”。
【讨论】:
编辑:添加了可能的解决方案(帖子结束)。
我有一个非常相似的问题,尽管是文件名而不是 URL。主要问题似乎是没有标准的方法来要求“最好的 ASCII 替换 ø”,因此即使您可以找到所有不需要的字符,也很难自动插入哪个替换。
我发布了很多可能有用的代码。详情请见this StackOverflow question。
编辑:我认为这个问题的解决方案在于StringInfo,它允许您遍历字符串中的子字符(Unicode 代理或组合字符)。这应该可以检测和转换类似 å 的内容(可以在 Unicode 中编码为 A-WITH-RING 或 RINGED-A;过滤掉装饰器并保留正常字符的部分)。
【讨论】: