栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何删除字符串上的重音符号?[重复]

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何删除字符串上的重音符号?[重复]

这取决于要求。对于大多数用途,然后将其标准化为NFD,然后过滤掉所有合并的字符即可。在某些情况下,将NFKD标准化更为合适(如果您还希望删除字符之间的其他区别)。

其他一些区别将不会被抓住,特别是抚摸的拉丁字符。对于某些语言,也没有明确的非特定于语言的方式(应将ł视为等同于l或w?),因此您可能需要自定义其他方法。

在某些情况下,为了确保Unipre版本之间的一致性,NFD和NFKD不能按预期工作。

因此:

public static IEnumerable<char> RemoveDiacriticsEnum(string src, bool compatNorm, Func<char, char> customFolding){    foreach(char c in src.Normalize(compatNorm ? NormalizationForm.FormKD : NormalizationForm.FormD))    switch(CharUnipreInfo.GetUnipreCategory(c))    {      case UnipreCategory.NonSpacingMark:      case UnipreCategory.SpacingCombiningMark:      case UnipreCategory.EnclosingMark:        //do nothing        break;      default:        yield return customFolding(c);        break;    }}public static IEnumerable<char> RemoveDiacriticsEnum(string src, bool compatNorm){  return RemoveDiacritics(src, compatNorm, c => c);}public static string RemoveDiacritics(string src, bool compatNorm, Func<char, char> customFolding){  StringBuilder sb = new StringBuilder();  foreach(char c in RemoveDiacriticsEnum(src, compatNorm, customFolding))    sb.Append(c);  return sb.ToString();}public static string RemoveDiacritics(string src, bool compatNorm){  return RemoveDiacritics(src, compatNorm, c => c);}

在这里,我们为上述问题案例设置了默认设置,只是忽略了它们。我们还从生成字符的枚举中拆分出了构建字符串的方法,因此在不需要对结果进行字符串操作的情况下,我们就不必浪费时间(例如,我们将编写字符以输出下一个字符,或者做进一步的字符处理)
-按字符操作)。

我们还想将ł和also转换为l和L,但没有其他特殊问题的示例案例可以使用:

private static char NormaliseLWithStroke(char c){  switch(c)  {     case 'ł':       return 'l';     case 'Ł':       return 'L';     default:       return c;  }}

在上述情况下,将其与上述方法一起使用将可消除笔画以及可分解的变音符号。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/432922.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号