c# - 计算特殊的 UTF-8 字符

标签 c#

我正在寻找一种方法来计算由多个字符组成的特殊字符,但在网上找不到解决方案!

例如我想计算字符串“வாழைப்பழம”。它实际上由 6 个泰米尔字符组成,但在本例中,当我们使用正常方法查找长度时,它由 9 个字符组成。我想知道泰米尔语是唯一一种会导致此问题的编码,以及是否有解决方案。我目前正试图在 C# 中找到解决方案。

提前谢谢你=)

最佳答案

使用StringInfo.LengthInTextElements :

var text = "வாழைப்பழம";
Console.WriteLine(text.Length);                               // 9
Console.WriteLine(new StringInfo(text).LengthInTextElements); // 6

有关此行为的解释可以在 String.Length 的文档中找到:

The Length property returns the number of Char objects in this instance, not the number of Unicode characters. The reason is that a Unicode character might be represented by more than one Char. Use the System.Globalization.StringInfo class to work with each Unicode character instead of each Char.

关于c# - 计算特殊的 UTF-8 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11055122/

相关文章:

c# - 计算文本中字符串数组中元素的总出现次数

c# - 在运行时加载带有子文件夹引用的程序集

c# - 创建 Windows 服务时如何使用 App.Config 文件中的 appSettings 值

c# - 在不同模式中映射具有相同表的实体Entity Framework 6代码优先

c# - StreamReader 返回另一个字符

c# - 如何在 ASP.NET MVC 中使用多个表单元素

c# - 无法从您的配置加载 'paypal' 部分

c# - (byte)Convert.ToChar(anyStringOfLengthOne) 怎么可能抛出错误?

c# - 覆盖抽象方法,但保持方法抽象?

c# - 具有模型导入功能的免费 opc ua 服务器