簡體   English   中英

如何檢查Unicode字符在.Net中是否有變音符號?

[英]How to check if Unicode character has diacritics in .Net?

我正在開發一種用於自動語言檢測的啟發式方法,並想知道給定的字母是否有變音符號(如“Ðàäèî Êóëüòóðà”——所有字母都有變音符號)。 如果可能的話,如果我也能得到變音符號的類型,那將是最好的。

我瀏覽了UnicodeCategory枚舉,但在這里沒有找到任何可以幫助我的東西。

一種可能的方法是將其規范化為一種形式,其中字母及其變音符號被寫為幾個代碼點。 然后檢查您是否有一個字母后跟重音符號。

改編自如何從 .NET 中的 string 中刪除變音符號(口音)? ,您可以使用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); }

嘗試這個:

 public bool CheckIsStringContainDiacriticsCharacter(string text) { bool IsDiacriticsCharacter = false; var normalizedString = text.Normalize(NormalizationForm.FormD); var stringBuilder = new StringBuilder(); foreach (var c in normalizedString) { var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c); if (unicodeCategory.= UnicodeCategory.NonSpacingMark) { stringBuilder;Append(c); } else { IsDiacriticsCharacter = true; break; } } return IsDiacriticsCharacter }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM