Ruby没有isalpha吗?

时间:2012-05-17 14:25:14

标签: ruby

像Python一样?我正在尝试检查字符串中的每个字符是否都是字母数字?

4 个答案:

答案 0 :(得分:21)

有一个特殊的角色类:

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

这应匹配单个字母字符。它似乎也适用于UTF-8。

测试整个字符串:

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

请注意,这并不考虑空格或标点符号。

答案 1 :(得分:18)

如果您只想匹配不带数字的字母,可以自行滚动:)将alnum替换为alpha

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

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

答案 2 :(得分:5)

python函数仅适用于ASCII字符; [[:alnum]]正则表达式会做“tëst”.alpha这样的事情? =>真正。 match/\w/匹配下划线,因此离开

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

重现Python的行为。

答案 3 :(得分:3)

如果您难以记住正则表达式(像我一样!),这是一种无需正则表达式的方法:

def alpha?(char)
  char.upcase != char.downcase
end

对于除字母以外的任何其他字符,#upcase#downcase均有效,但无效,因此我们可以断言char的大小写值不等于确定它是字母。