c# - 使用 .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 来识别它?
解决方案
根据 Unicode 规范,该字符是mai tho,属于“mark, nonspacing (Mn)”组。</p>
您可以使用该Char.GetUnicodeCategory()
方法来检查类型。对于非间距标记,类型为 5,或UnicodeCategory.NonSpacingMark
推荐阅读
- kotlin - OpenGL中简单矩形碰撞的问题
- connection-reset - 如何解决访问控制允许来源错误
- python - Pymoo 在候选搜索空间中工作的可能性
- flutter - 我想构建一个动态标签栏和相应的页面,其中包含与该标签对应的项目列表,使用复杂的 JSON 数据在颤振中
- docusignapi - 使用带有 DocuSign SDK 的自定义字段未按预期工作
- c++ - 仅当不同时如何在二进制文件中重写寄存器?
- matlab - 如果 128 位长度超过 16 个字符,如何加密 AES?
- node.js - 包 puppeteer 不能正常工作(centos 7)
- oracle - 如何检索 30 天前完成的并发请求的 sql_id?
- sql - 我希望发票金额列的“5 月 1 日”根据 bcd.processeddate '2020 年 5 月 1 日'5/1/2021' 一年的数据是动态的