Не имеет ли Ruby isalpha?

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

Ответ 1

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

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

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

Чтобы проверить целую строку:

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

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

Ответ 2

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

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

'asdf234'.alpha? # => true
'[email protected]#$'.alpha? # => false

Ответ 3

Функция python работает только для символов ASCII; [[: alnum]] regex будет делать такие вещи, как "tëst".alpha? = > true. match/\w/ соответствует символу подчеркивания, поэтому оставляет

def isalpha(str)
  !str.match(/[^A-Za-z]/)
end

чтобы воспроизвести поведение Python.