首页 > 解决方案 > 使用 .NET 框架对这个泰语字符进行分类

问题描述

我正在尝试根据此处解释的规则解析一些泰语文本http://www.thai-language.com/ref/spacing

基本上,我想在空格和标点符号之间找到字符串,类似于我们在英语中所做的那样。我意识到单词本身不一定在泰语中被空格分隔,没关系。

为了解析我尝试简单循环的文本,比如

while( Char.IsLetterOrDigit(theText[i++]) ) {}

查找下一个不是字母或数字的字符。除了像这个这样的某些角色外,这有效

泰语字符

这是该单词中的第二个字符(我认为这是单词中第一个字符的“上标”字符)。

泰语单词

这个字符似乎没有被 Char 类归类为任何东西,即:

Char.IsLowSurrogate((char)3657)
Char.IsPunctuation((char)3657)
Char.IsWhiteSpace((char)3657)
Char.IsSymbol((char)3657)
Char.IsSeparator((char)3657)
Char.IsDigit((char)3657)
Char.IsControl((char)3657)
Char.IsLetter((char)3657)
Char.IsSurrogate((char)3657)

全部返回false

这个字符可能是一个“音调”——如何使用 .NET 来识别它?

标签: c#.nettextinternationalizationthai

解决方案


根据 Unicode 规范,该字符是mai tho,属于“mark, nonspacing (Mn)”组。</p>

您可以使用该Char.GetUnicodeCategory()方法来检查类型。对于非间距标记,类型为 5,或UnicodeCategory.NonSpacingMark


推荐阅读