2017-08-30 95 views
6

我想检测阿拉伯语波斯字符串中的字符。如何通过c#检测字符串中的阿拉伯或波斯字符?

例如:

在字符串搜索= "مشخصات، قیمت و خرید لپ تاپ 15 اینچی ایسر مدل Aspire ES1-533-C4UH"

并返回true

和在搜索字符串= "Aspire ES1-533-C4UH"

并返回false

string pattern = @"^[\p{IsArabic}\s\p{N}]+$"; 
string input = @"مشخصات، قیمت و خرید لپ تاپ 15 اینچی ایسر مدل Aspire ES1-533-C4UH"; 
RegexOptions options = RegexOptions.RightToLeft;" 

foreach (Match m in Regex.Matches(input, pattern, options)) 
{ 
    if(m.Value !="") 
    { 
     bool x=true; 
    } 
    else 
     x=false; 
} 

但这不起作用。

回答

5

试试用这个(我正在使用它,它的工作原理)。

Regex接受UTF范围内的所有阿拉伯字母。

Regex regex = new Regex("[\u0600-\u06ff]|[\u0750-\u077f]|[\ufb50-\ufc3f]|[\ufe70-\ufefc]"); 
return regex.IsMatch(text); 
+3

另外'[ء-ي] +'为阿拉伯语,但解释几句话可以帮助... –

+1

如果你有使用Unicode块的经验只是好奇,如果这是好还是坏?例如'\ p {IsArabic}'https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/character-classes-in-regular-expressions#SupportedNamedBlocks – BurnsBA

+1

+1。另请参阅[this](https://stackoverflow.com/a/11323651/21567)以获得更多信息(尽管它是Javascript)。 –