Не руби у isalpha?

Как Python? Я пытаюсь проверить, является ли каждый символ в строке буквенно-цифровой или нет?

3 ответов


для этого есть специальный класс символов:

char.match(/^[[:alpha:]]$/)

Это должно соответствовать одному алфавитному символу. Он также работает для UTF-8.

чтобы проверить всю строку:

string.match(/^[[:alpha:]]+$/)

имейте в виду, что это не учитывает пробелов и знаков препинания.


вы можете свернуть свой собственный :) заменить alnum С alpha Если вы хотите, чтобы соответствовать только буквы, без цифр.

class String
  def alpha?
    !!match(/^[[:alnum:]]+$/)
  end
end

'asdf234'.alpha? # => true
'asdf@#$'.alpha? # => false

функция python работает только для символов ASCII; регулярное выражение [[:alnum]] будет делать такие вещи, как "tëst".Альфа? => истинный. match/\w/ соответствует подчеркиванию, так что остается

def isalpha(str)
  return false if str.empty?
  !str.match(/[^A-Za-z]/)
end

для воспроизведения поведения Python.