gpt4 book ai didi

c# - 如何检查 Unicode 字符是否在 .Net 中有变音符号?

转载 作者:太空狗 更新时间:2023-10-29 20:57:07 25 4
gpt4 key购买 nike

我正在开发一种用于自动语言检测的启发式方法,并想查明给定的字母是否有变音符号(例如“Ðàäèî Êóëüòóðà”——所有字母都有变音符号)。如果可能的话,我最好也能得到变音符号的类型。

我浏览了 UnicodeCategory 枚举,但在这里找不到任何可以帮助我的东西。

最佳答案

一种可能的方法是将其规范化为一种形式,其中字母及其变音符号被写为多个代码点。然后检查您是否有一个字母后跟重音符号。

改编自 How do I remove diacritics (accents) from a string in .NET? ,您可以使用 Normalize(NormalizationForm.FormD) 进行规范化,并使用 UnicodeCategory.NonSpacingMark 检查变音符号。

bool IsLetterWithDiacritics(char c)
{
var s = c.ToString().Normalize(NormalizationForm.FormD);
return (s.Length > 1) &&
char.IsLetter(s[0]) &&
s.Skip(1).All(c2 => CharUnicodeInfo.GetUnicodeCategory(c2) == UnicodeCategory.NonSpacingMark);
}

关于c# - 如何检查 Unicode 字符是否在 .Net 中有变音符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9349608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com