有没有办法使用 C# 检查文本是西里尔文还是拉丁文?
问问题
12387 次
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 回答