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

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

用 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());
}

参阅:

dotnet C# 如何正确获取藏文的字数的更多相关文章

  1. document.documentElement.clientHeight 和 $(window).height() 无法正确获取页面可视区高度

    背景: 弹出层插件(自适应) 实现过程中突然发现在获取可视区高度时,无论document.documentElement.clientHeight 还是 $(window).height()都无法正确 ...

  2. 使用ExpandableListView——当有Group选项展开时,如何正确获取长按的Group选项。

    当我们使用ExpandableListView时,实现点击一个GroupView则展开ChidView,那么这个时候,Adapter的大小前后是有变化的. 例如:假设有20个GroupView,每个G ...

  3. PHP处理上传文件信息数组中的文件类型 正确获取

    PHP处理上传文件信息数组中的文件类型$_FILES['type']由客户端浏览器提供,有可能是黑客伪造的信息,请写一个函数来确保用户上传的图像文件类型真实可靠 如果是一般文件则通过 mime_con ...

  4. Django_博客项目 引入外部js文件内含模板语法无法正确获取值得说明和处理

    问题描述 : 项目中若存在对一段js代码复用多次的时候, 通常将此段代码移动到一个单独的静态文件中在被使用的地方利用 script 标签的 src 属性进行外部调用 但是如果此文件中存在使用 HTML ...

  5. [开发笔记]-C#获取pdf文档的页数

    [操作pdf文档]之C#判断pdf文档的页数: /// <summary> /// 获取pdf文档的页数 /// </summary> /// <param name=& ...

  6. [转载]java获取word文档的条目化内容

    在开发Web办公系统或文档系统时,PageOffice组件是众所周知的在线处理微软word/ppt/excel文档的强大工具,它对WORD文档的各种处理在API层面进行了封装,屏蔽了Office VB ...

  7. [原创]java获取word文档的条目化内容

    在开发Web办公系统或文档系统时,PageOffice组件是众所周知的在线处理微软word/ppt/excel文档的强大工具,它对WORD文档的各种处理在API层面进行了封装,屏蔽了Office VB ...

  8. TibetanFont | ཡིག་གཟུགས། | 藏文字体

    1.Microsoft Himalaya 微软喜马拉雅字体 2007年1月30日,微软公司向全球市场同步发布了其最新操作系统Windows Vista,并自带藏文字体和输入法,Windows Vist ...

  9. 微信支付报ip错,怀疑是因为不能正确获取$_Server[addr])ip导致的

    报如下错误,应该是本地测试环境不能正确获取客户ip导致的错误 果然 放到服务器上在测试就好了

  10. PyRevit开发第一步:获取Revit文档Document

    1.安装PythonShell插件 PythonShell 2018 插件下载 交流QQ群: 17075104 新建项目后,运行功能Python Shell, 在弹出的窗口中复制或输入以下引用代码模块 ...

随机推荐

  1. .Net依赖注入神器Scrutor(下)

    前言 上一篇文章我们讲到了Scrutor第一个核心功能Scanning,本文讲解的是Scrutor第二个核心的功能Decoration 装饰器模式在依赖注入中的使用. 装饰器模式允许您向现有服务类中添 ...

  2. Smtp Oauth With Python

    我的博客园:https://www.cnblogs.com/CQman/ GitHub #基于Python语言的smtp Oauth 连接世纪互联运营的Office 365(或21V O365)的邮箱 ...

  3. C# ASP.NET MVC 配置 跨域访问

    在web.config文件中的 system.webServer 节点下 增加如下配置        <httpProtocol>             <customHeader ...

  4. KingbaseES V8R6 等待事件之LWLock Buffer_IO

    等待事件含义 当进程同时尝试访问相同页面时,等待其他进程完成其输入/输出(I/O)操作时,会发生LWLock:BufferIO等待事件.其目的是将同一页读取到共享缓冲区中. 每个共享缓冲区都有一个与L ...

  5. VS2022+QT5.14.2开发VS QT Tool的使用

    1.安装环境vs2022+QT5.14.2 qt vs tool (vsaddin)的使用遇到的坑 1.安装qt-vsaddin-msvc2022-3.0.2.vsix 安装失败 2.安装qt-vsa ...

  6. #主席树,离散,扫描线#洛谷 3168 [CQOI2015]任务查询系统

    题目 分析 询问显然得预处理,考虑以优先级建权值线段树, 将优先级离散化处理,那么第\(k\)大可以用线段树来求 那任务怎么办,考虑时间用扫描线的方法,按照时间建新的线段树 把任务分成两部分,在两端差 ...

  7. 劫持TLS绕过canary pwn89

    劫持TLS绕过canary pwn88 首先了解一下这个东西的前提条件和原理 前提: 溢出字节够大,通常至少一个page(4K) 创建一个线程,在线程内栈溢出 原理: 在开启canary的情况下,当程 ...

  8. 使用OHOS SDK构建flac

    参照OHOS IDE和SDK的安装方法配置好开发环境. 从github下载源码. 执行如下命令: git clone --depth=1 https://github.com/xiph/flac 进入 ...

  9. 报名启动|OpenHarmony源码转换器—多线程特性转换赛题

  10. 深入理解 Java 修饰符与封装:访问权限、行为控制与数据隐藏

    Java 修饰符 Java 修饰符 用于控制类.属性.方法和构造函数的访问权限和行为.它们可以分为两组: 访问修饰符: public: 意味着代码对所有类可访问. private: 意味着代码只能在声 ...