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

How to differentiate text and change align accordingly

我有一个要求,我有一个文本字段,我正在从数据库中获取数据。它可能是阿拉伯语或英语。我想动态区分它并相应地更改对齐方式。即,如果文本是阿拉伯语,它应该从右到左,否则从左到右。

如果文本包含 RTL mark,那么 Windows 会为您完成。

否则,您可以简单地检查 [=13] 中的字符(不要忘记 System.Char 代表 code-unit,而不是 code-point,但在这种情况下这不是问题) =]:

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

如果阿拉伯字符数大于英文字符数,则可以说文本是阿拉伯语。

您可以使用 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;
    }