本周早些时候我刚刚开始摆弄 Ruby,但遇到了一些我不太知道如何编码的问题。我正在将用 Java 编写的扫描器转换为 Ruby 以进行类作业,我已经开始讨论这一部分:
if (Character.isLetter(lookAhead))
{
return id();
}
if (Character.isDigit(lookAhead))
{
return number();
}
lookAhead
是从字符串中挑选出来的单个字符(每次循环时移动一个空格),这两个方法确定它是字符还是数字,并返回适当的标记类型。我还没能找到一个 Ruby 相当于Character.isLetter()
and Character.isDigit()
.
使用匹配字母和数字的正则表达式:
def letter?(lookAhead)
lookAhead.match?(/[[:alpha:]]/)
end
def numeric?(lookAhead)
lookAhead.match?(/[[:digit:]]/)
end
这些称为 POSIX 括号表达式,它们的优点是给定类别下的 unicode 字符将匹配。例如:
'ñ'.match?(/[A-Za-z]/) #=> false
'ñ'.match?(/\w/) #=> false
'ñ'.match?(/[[:alpha:]]/) #=> true
您可以阅读更多内容Ruby 的正则表达式文档 https://ruby-doc.org/core/Regexp.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)