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

したがって、ここでの問題は、「ல」、「ி」のように分割せずに、文字「லி」を「லி」として削除する方法です。

インドの言語では、子音と母音を1文字で表すのが自然ですが、c#で解析すると困難になります。

私はすべて3文字に分割する必要があります。

4

1 に答える 1

13

書記素を反復するには、StringInfoクラスのメソッドを使用できます。

基本文字 + 結合文字の各組み合わせは、.NET ドキュメントでは「テキスト要素」と呼ばれ、次を使用してそれらを反復処理できますTextElementEnumerator

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

出力:

க
ம
லி
于 2012-12-20T07:08:31.130 に答える