Undr

На память

Проверка на русские символы в строке

1 Star2 Stars3 Stars4 Stars5 Stars (1 голосов, средний: 1.00 из 5)
Loading ... Loading ...

without comments

Как-то потребовалось делать проверку на кириллицу в строке. Данный код проверяет состоит ли строка только из символов кириллицы и цифр и других знаков:

class TestCyrillic
  class << self
    RUSSIAN_CODES = (1040..1103).to_a + (32..64).to_a + (91..96).to_a + (123..126).to_a + [1025, 1105]
   
    def cyrillic?(string)
      result = true
      string.force_encoding("UTF-8").each_char{|c| result &&= RUSSIAN_CODES.include?(c.ord)}
      result
    end
  end
end

Для удобства я добавил в класс String метод cyrillic?

class String
  def cyrillic?
    TestCyrillic.cyrillic?(self)
  end
end

Примеры:

"Русские буквы".cyrillic?                            # true
"Русские буквы и !№%:,.;()_+=-0986654".cyrillic?     # true
"!№%:,.;()_+=-0986654".cyrillic?                     # true
"Русские буквы и English letters".cyrillic?          # false
"Only English letters".cyrillic?                     # false
"English letters and !№%:,.;()_+=-0986654".cyrillic? # false

Код довольно медленный из-за проверок каждого символа, поэтому его лучше не использовать для больших кусков текста.

Написал undr ()

4 ноября 2011 в 11:11

Размещено в Примеры, Программирование

Метки:

Оставьте комментарий