如何区分文本并相应地更改对齐方式

时间:2016-01-18 08:52:01

标签: c# windows form-control

我有一个要求,我有一个文本字段,我从数据库中提取数据。它可能是阿拉伯语或英语。我想动态区分它并相应地改变对齐。也就是说,如果文本是阿拉伯语,则应该从右到左,从左到右。

2 个答案:

答案 0 :(得分:0)

如果文字包含RTL mark,则Windows会为您执行此操作。

否则你可能只是检查字符(不要忘记System.Char代表代码单元,而不是代码点,但在这种情况下它不是问题){{3 }}:

public bool IsArabic(string text)
{
    return Regex.IsMatch(text, "[\u06000-\u06FF]")
}

答案 1 :(得分:0)

如果阿拉伯字符数超过英文字符数,你可以说文字是阿拉伯语。

您可以使用character classes in regular expression

来确定它
    public bool IsArabic(this string input)
    {
        var isArabic = Regex.Matches(input, "\\p{IsArabic}");
        var isLatin = Regex.Matches(input, "\\p{IsBasicLatin}");

        if (isArabic == null)
            return false;

        if (isLatin == null)
            return true; //suggest that there is no another character types

        if (isArabic.Count > isLatin.Count)
            return true;

        return false;
    }