如何在Ruby中验证字符串是否是正确的十六进制值?

 曾经的诺系列 发布于 2023-02-12 16:59

我正在用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代码.

谢谢!

1 个回答
  • !str[/\H/] 将查找无效的十六进制值.

    2023-02-12 17:00 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有