将unicode字符串与组合/从属字符拆分在一起

时间:2014-09-15 05:01:07

标签: c# unicode-string

假设我有一个像"সাজানো"的bangla字符串。我需要把它分成"সা" "জা" "নো&#34 ;.我尝试过ToCharArray()方法但是它将以下字符串拆分为'স','া','জ','া&#39 ;,'ন','ো'。

所以问题是我想把一个字符串拆分成另一个字符串数组,其中包含组合/从属字符。喜欢"সা"应该与"সাজানো"分开,而不是像'স'和'া'。

2 个答案:

答案 0 :(得分:0)

试试这个:

string[] SplitString(string S)
{
    return S.Split('া');
}

private void button1_Click(object sender, EventArgs e)
{
    string B = "সাজানো";
    var vv = SplitString(B);
    foreach (var item in vv)
    {
        MessageBox.Show(item.ToString());
    }
}

答案 1 :(得分:0)

这也有效:

string text = "সাজানো";
var textCharArray = text.ToCharArray();
var tokens = new List<string>();

for (int i = 0; i < textCharArray.Length; i++)
{
    char c = textCharArray[i];
    if (char.GetUnicodeCategory(c) == System.Globalization.UnicodeCategory.SpacingCombiningMark)
    {
        string token = $"{tokens.Last()}{c}";
        tokens.RemoveAt(tokens.Count() - 1);
        tokens.Add(token);
    }
    else
    {
        tokens.Add($"{c}");
    }
}

foreach (string token in tokens) 
    Console.WriteLine(token);

代码有点草率。它迟到了。

如果您正在使用代理人,也可以测试代理人。