2012-07-10 12 views

Odpowiedz

24

Użyj regex i sprawdzić \p{IsCyrillic}, na przykład:

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

Byłoby to prawdą dla napisu „abcабв”, ponieważ zawiera co najmniej jeden cyrillic charakteru. Jeśli ma to być fałszywa, jeśli nie są dla znaków cyrylicy w ciągu, użyć:

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

To byłoby fałszywe dla strun „abcабв”, ale odnosi się do „абв”.

Aby sprawdzić, co nazwane blok IsCyrillic lub inne wymienione bloki zawierać, przyjrzeć się tej http://msdn.microsoft.com/en-us/library/20bw873z.aspx#SupportedNamedBlocks

+1

Działa drobne Thanks :) – vikifor

-3

Oto kolejny rozwiązanie tego problemu

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

Naprawdę don nie chcę tego robić. Samo sprawdzanie każdej postaci nie jest dobrym pomysłem. Jeśli chcesz mieć pewność, że każdy znak łańcucha jest cyrylicą, możesz użyć '! Regex.IsMatch (textInput, @" \ P {Iscyrillic} ") (zwrócić uwagę na wartość P, która neguje sprawdzanie). Ale co jeśli są liczby lub znaki takie jak "!". itp.? Twój czek zwróci false, czy chcesz tego zachowania? – Hinek

+0

Tak, masz rację, będę musiał umieścić wszystkie znaki we wzór na mój sposób. Twoje rozwiązanie jest w porządku. – vikifor

Powiązane problemy