В C# \ p {Han} соответствует как китайским иероглифам, так и японским хирагане и катакане. Я хочу различать их, что мне делать? Превратите каждый символ в Unicode, а затем определите, находится ли символ в диапазоне?
У вас должна быть возможность исключить хирагану и катакану по их именам, docs.microsoft.com/en-us/dotnet/standard/base-types/…
@RufusL, мое решение работает, но я хочу знать, есть ли другой способ, не такой грязный, как мой.





//For chinese chars
public bool IsChinese(string text)
{
return text.Any(c => c >= 0x20000 && c <= 0xFA2D);
}
//For japanese chars
private static IEnumerable<char> GetCharsInRange(string text, int min, int max)
{
return text.Where(e => e >= min && e <= max);
}
Применение:
var romaji = GetCharsInRange(searchKeyword, 0x0020, 0x007E);
var hiragana = GetCharsInRange(searchKeyword, 0x3040, 0x309F);
var katakana = GetCharsInRange(searchKeyword, 0x30A0, 0x30FF);
var kanji = GetCharsInRange(searchKeyword, 0x4E00, 0x9FBF);
0x20000 должен быть 0x2000? Я предполагаю, что это так, потому что c не может быть больше, чем 0x20000, а также меньше, чем 0xFA2D.
Вы пробовали? Это сработало?