Метод
JavaScript charCodeAt
говорит мне, что два символа - это разные значения Юникода. Ruby метод .ord
говорит мне то же самое. Вы можете проверить эти значения Unicode более буквально в Ruby, но я бы порекомендовал найти способ нормализации данных вместо добавления бесконечных условий для необычных символов. Похоже, что это 0x0435 1077 CYRILLIC SMALL LETTER IE
е в соответствии с таблицей поиска Unicode, которую я нашел в Интернете.
В качестве альтернативы, есть один подход, при котором вы можете просто запретить все символы кириллицы c. Я использовал полный диапазон исключенных символов, чтобы вы могли добавлять исключения по мере необходимости.
#!/usr/bin/env ruby
CYRILLIC_UNICODE_DECIMALS = *(1024..1273).freeze
for arg in ARGV
# next unless arg.is_a?(String)
arg.split('').each do |char|
p char if CYRILLIC_UNICODE_DECIMALS.include?(char.ord)
end
end
Для справки, это методы .ord
и .charCodeAt
, которые я использовал против вашего примера. Я начал с JavaScript, потому что это простой тест в консоли браузера.
2.6.3 :005 > 'е'.ord
=> 1077
2.6.3 :006 > 'e'.ord
=> 101
'"е" == "e"'.charCodeAt(1)
1077
'"e" == "e"'.charCodeAt(1)
101