在C#中将Unicode字符串转换为印度语言的Unicode字符

8

我需要将Unicode字符串转换为Unicode字符。

例如:泰米尔语

"கமலி"=>'க','ம','லி'

我可以剥离Unicode字节,但生成Unicode字符却成为了问题。

byte[] stringBytes = Encoding.Unicode.GetBytes("கமலி");
char[] stringChars = Encoding.Unicode.GetChars(stringBytes);
foreach (var crt in stringChars)
 {
     Trace.WriteLine(crt);
 }

它的结果如下:

'க'=>0x0b95

'ம'=>0x0bae

'ல'=>0x0bb2

'ி'=>0x0bbf

所以问题在于如何将字符 'லி' 作为单个字符保留,而不是像 'ல','ி' 那样分开。

由于印度语言中用单个字符表示辅音和元音是自然的,但使用 C# 解析会有困难。

我需要将其拆分为3个字符。


1
你说的“如何去除字符…”是什么意思?你能展示一下你期望的结果吗? - Alexei Levenkov
你看到字符'லி'时,不要将其拆分为'ல'和'ி',而应该保持原样'லி'。 - Arunkumar Chandrasekaran
阅读此文档...Unicode联盟已经这样设计了它。 - Uthistran Selvaraj
我并不询问设计方面的问题。我的问题是如何将Unicode字符串拆分为Unicode字符,因为它是印度语言。 - Arunkumar Chandrasekaran
1
我看到这两个Char被渲染为一个字形连字号-我不知道是哪一个...但仍然不清楚你想要什么。我怀疑答案隐藏在CharStringInfo的描述中,但你需要编辑你的问题,以便更容易理解。 - Alexei Levenkov
1个回答

13

要迭代图形符号,可以使用StringInfo类的方法。

根据.NET文档,每个基字符和组合字符的组合被称为“文本元素”,您可以使用TextElementEnumerator迭代它们:

var str = "கமலி";
var enumerator = System.Globalization.StringInfo.GetTextElementEnumerator(str);
while (enumerator.MoveNext())
{
    Console.WriteLine(enumerator.Current);
}

输出:

க
ம
லி

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接