【问题标题】:Splitting unicode string with combined/dependent characters together将 unicode 字符串与组合/相关字符拆分在一起
【发布时间】:2014-09-15 05:01:06
【问题描述】:

假设我有一个像“সাজানো”这样的孟加拉语字符串。我需要将其拆分为“সা”“জা”“নো”。我尝试过 ToCharArray() 方法,但是它会将以下字符串拆分为 'স'、'া'、'জ'、'া'、'ন'、'ো'。

所以问题是我想将一个字符串拆分为另一个字符串数组,其中包含组合/依赖的字符。像“সা”应该与“সাজানো”分开,而不是像“স”和“া”这样的单个字符。

【问题讨论】:

标签: c# unicode-string


【解决方案1】:

这也有效:

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);

代码有点草率。来晚了。

如果您正在使用这些代理,您也可以测试它们。

【讨论】:

    【解决方案2】:

    试试这个:

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

    【讨论】:

    • 这不行,元音部分是ो,ि ...等会发生什么?
    • @bansi 我们不知道孟加拉语。但它适用于问题 সাজানো => "সা" "জা" "নো" 的实例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 2021-07-19
    • 2011-09-24
    • 2021-10-16
    相关资源
    最近更新 更多