Ruby 不';你没有艾萨帕吗?

Ruby 不';你没有艾萨帕吗?,ruby,Ruby,像蟒蛇?我试图检查字符串中的每个字符是否为字母数字?有一个特殊的字符类: char.match(/^[[:alpha:]]$/) 应该匹配一个字母字符。它似乎也适用于UTF-8 要测试整个字符串,请执行以下操作: string.match(/^[[:alpha:]]+$/) 请记住,这不包括空格或标点符号。您可以自己滚动:)如果只想匹配字母而不匹配数字,请将alnum替换为alpha class String def alpha? !!match(/^[[:alnum:]]+$/

像蟒蛇?我试图检查字符串中的每个字符是否为字母数字?

有一个特殊的字符类:

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”.alpha?=>对。
match/\w/
匹配下划线,因此

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

复制Python行为。

如果你记不住正则表达式(像我一样!),这里有一种不用正则表达式的方法:

def alpha?(字符)
char.upcase!=夏·唐卡斯
结束

对于字母以外的任何其他字符,
#upcase
#downcase
起作用,但不起作用,因此我们可以断言字符的upcase和downccase值不相等,以确定它是字母

我试着用谷歌搜索,但什么也没找到。所以我只是想确认一下。你可以用正则表达式。谢谢。我想在Ruby中,你必须使用正则表达式。如果你喜欢Sergio建议的那种风格,你可以添加一个
String#isalpha?
方法。我不知道这是怎样的正确答案。[[:alpha:]代表字母表,而OP要求检查字母数字字符。或者更像ruby风格:
#alpha?
@d11wtq:绝对如此。谢谢:)
!self.match(/[^[:alnum:]/)
更简单。@steenslag:这是有争议的:)在
字符串
实例的上下文中,
self
是无关的。python
isalpha
不支持带数字的字符串对于空字符串,它返回
true
,但应该返回
false