2012-07-10 16 views

Respuesta

24

Utilizar una expresión regular y comprobar si \p{IsCyrillic}, por ejemplo:

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

Esto sería cierto para la cadena "abcабв" porque contiene al menos un carácter cirílico. Si usted quiere que sea falsa si hay caracteres no cirílicos en la cadena, use:

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

esto sería falsa la cadena "abcабв", pero es cierto para "абв".

Para comprobar lo que el bloque llamado IsCyrillic u otros bloques nombrados contener, echar un vistazo a este http://msdn.microsoft.com/en-us/library/20bw873z.aspx#SupportedNamedBlocks

+1

funciona bien gracias :) – vikifor

-3

Aquí hay otra solución para este problema

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; 
} 
+0

Realmente don No quiero hacer eso. Comprobar todos los personajes por sí mismo no es una buena idea aquí. Si quiere asegurarse de que cada carácter de la cadena sea cirílico, puede usar '! Regex.IsMatch (textInput, @" \ P {IsCyrillic} ")' (observe la P mayúscula, que niega el cheque). Pero, ¿y si hay números o caracteres como "!". ¿etc.? Su cheque sería falso entonces, ¿quiere este comportamiento? – Hinek

+0

sí, tienes razón, tendré que poner todos los personajes en un patrón de cuerdas en mi camino. Tu solución está bien. – vikifor

Cuestiones relacionadas