我有一个要求,我有一个文本字段,我正在从数据库中获取数据。它可能是阿拉伯语或英语。我想动态区分它并相应地更改对齐方式。即,如果文本是阿拉伯语,它应该从右到左,否则从左到右。
问问题
134 次
2 回答
1
你可以说文本是阿拉伯语,如果阿拉伯字符的数量多于英文字符的数量。
您可以使用正则表达式中的字符类来确定它
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;
}
于 2016-01-18T09:08:07.050 回答
1
如果文本包含RTL 标记,则 Windows 会为您执行此操作。
否则,您可以简单地检查Unicode 阿拉伯语代码块中的字符(不要忘记System.Char
表示代码单元,而不是代码点,但在这种情况下它不是问题):
public bool IsArabic(string text)
{
return Regex.IsMatch(text, "[\u06000-\u06FF]")
}
于 2016-01-18T09:03:42.263 回答