28

有没有办法使用 C# 检查文本是西里尔文还是拉丁文?

4

3 回答 3

49

使用正则表达式并检查\p{IsCyrillic},例如:

if (Regex.IsMatch(stringToCheck, @"\p{IsCyrillic}"))
{
    // there is at least one cyrillic character in the string
}

这对于字符串 "abcабв" 来说是正确的,因为它至少包含一个西里尔字符。如果字符串中有非西里尔字符,则希望它为假,请使用:

if (!Regex.IsMatch(stringToCheck, @"\P{IsCyrillic}"))
{
    // there are only cyrillic characters in the string
}

这对于字符串“abcабв”是错误的,但对于“абв”是正确的。

要检查 IsCyrillic 命名块或其他命名块包含的内容,请查看此http://msdn.microsoft.com/en-us/library/20bw873z.aspx#SupportedNamedBlocks

于 2012-07-10T13:49:50.980 回答
4

这个怎么样 ?

string pattern = @"\p{IsCyrillic}";
if ( Regex.Matches(textInput, pattern).Count > 0)
{
    // contains cyrillics' characters.
}

如果要检查包含多于 x 个字符的西里尔字符,请更改右手数值。

我们的系统收到的垃圾邮件包含大约 30% 的
完整文本的西里尔字符;因此,无法确定是 100% 还是 0%

于 2018-05-14T06:50:24.883 回答
-4

这是此问题的另一种解决方案

public bool isCyrillic(string textInput)
{
bool rezultat=true;
 string pattern = @"[абвгдѓежзѕијклљмнњопрстќуфхцчџш]";
        char[] textArray = textInput.ToCharArray();
        for (int i = 0; i < textArray.Length; i++)
        {
            if (!Regex.IsMatch(textArray[i].ToString(),pattern))
            {
                rezultat = false;
                break;
            }
        }
        return rezultat;
}
于 2012-07-10T14:39:19.083 回答