Ruby:如何找出一个字符是字母还是数字?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (139)

我正在将一个用Java编写的扫描器转换成Ruby来进行类的分配,我已经完成了这个部分:

if (Character.isLetter(lookAhead))
{      
    return id();
}

if (Character.isDigit(lookAhead))
{
    return number();
}

lookAhead是从字符串中选取的单个字符(每次循环移动一个空格),这两个方法确定是字符还是数字,返回相应的标记类型。我还没有能够找出一个等同于Character.isLetter()Character.isDigit()的东西

提问于
用户回答回答于

使用与字母和数字匹配的正则表达式:

def letter?(lookAhead)
  lookAhead =~ /[[:alpha:]]/
end

def numeric?(lookAhead)
  lookAhead =~ /[[:digit:]]/
end

这些称为POSIX括号表达式,它们的优点是给定类别下的Unicode字符将匹配。例如:

'ñ' =~ /[A-Za-z]/    #=> nil
'ñ' =~ /\w/          #=> nil
'ñ' =~ /[[:alpha:]]/   #=> 0
用户回答回答于

最简单的方法是使用正则表达式:

def numeric?(lookAhead)
  lookAhead =~ /[0-9]/
end

def letter?(lookAhead)
  lookAhead =~ /[A-Za-z]/
end

扫码关注云+社区

领取腾讯云代金券