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