dotnet C# 如何正确获取藏文的字数

Posted lindexi_gd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dotnet C# 如何正确获取藏文的字数相关的知识,希望对你有一定的参考价值。

在咱国内有很多有趣的文字,其中藏文属于有趣的文字里面特别有趣的一项,特别是对于做文本库的同学,大概都知道什么叫合写字吧。合写字的含义就是多个字符一起组成一个字。但是多个字符在内存中,本身就是多个字符对象,以往统计某个字符串的字数,咱简单判断只是拿字符串的字符数量进行获取。这个方法在藏文下肯定是不可行的,藏文的一个字由多个字符组成,因此需要本文介绍的特别的方法

先给大家来一个简单的藏文字 དིོེུ 这个字其实是由 ད + ུ + ི + ོ + ེ 这几个字符组成的

用 string.Length 获取到的 དིོེུ 这个字也是符合预期 5 个字符,当然这也是不符合预期的字数

这是关于语言文化方面的内容,自己写一定是不靠谱的。好在 .NET 里面提供的权威的获取方法,通过 StringInfo 类的辅助,可以获取可视效果下的字符串的字数

var info = new StringInfo("དིོེུ");
var realLength = info.LengthInTextElements; // realLength = 1

通过此即可获取正确的字符长度

额外的,如果想要枚举一个藏文句子的每个藏文的字。那肯定不能使用字符的遍历方式,否则输出就和汉字的遍历输出为偏旁一样了。遍历藏文,需要使用 StringInfo.GetTextElementEnumerator 方法,例子如下

var enumerator = StringInfo.GetTextElementEnumerator("ཀྲུང་ཧྭ་མི་དམངས་སྤྱི་མཐུན་རྒྱལ་ཁབ།");
while (enumerator.MoveNext())
{
    Console.WriteLine(enumerator.GetTextElement());
}

参阅:

我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新

如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入

如有不方便在博客评论的问题,可以加我 QQ 2844808902 交流


本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

以上是关于dotnet C# 如何正确获取藏文的字数的主要内容,如果未能解决你的问题,请参考以下文章

dotnet C# 如何正确获取藏文的字数

急急急!求教关于android2.3.4添加藏文语言后,大部分能够显示,但是上、下加字叠加严重,显示不正确

dotnet C# 获取一个可用的端口的方法

如何使用数据集在 C# 或 dotnet 中查找主键列名称?

dotnet C# 多线程集合的 Linq 获取值同时写入集合将会抛出异常

C# Microsoft.Office.Interop.Word怎么获取页数和字数?