我正在用Ruby编写6502汇编程序.我正在寻找一种以字符串形式验证十六进制操作数的方法.我知道String对象提供了一个"十六进制"方法来返回一个数字,但这是我遇到的一个问题:
"0A".hex #=> 10 - a valid hexadecimal value "0Z".hex #=> 0 - invalid, produces a zero "asfd".hex #=> 10 - Why 10? I guess it reads 'a' first and stops at 's'?
输入一堆胡言乱语,你会得到一些奇怪的结果.我需要的是首先验证该值是否为合法的十六进制字符串的方法.
我正在玩正则表达式,并意识到我可以这样做:
true if "0A" =~ /[A-Fa-f0-9]/ #=> true true if "0Z" =~ /[A-Fa-f0-9]/ #=> true <-- PROBLEM
我不知道如何解决这个问题.我需要能够验证字母只是AF,如果它只是数字也可以.
我希望避免意大利面条代码,充斥着"如果"的陈述.我希望有人可以提供"单行"或某种形式的elegent代码.
谢谢!
!str[/\H/]
将查找无效的十六进制值.