加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 验证String是否为十六进制

发布时间:2020-12-15 00:58:36 所属栏目:Java 来源:网络整理
导读:我有一个像“09a”的字符串,我需要一个方法来确认文本是否为十六进制.我发布的代码类似,它验证字符串是十进制数.我想做同样的,但是对于十六进制. 非常非常感谢你! private static boolean isNumeric(String cadena) { try { Long.parseLong(cadena); return
我有一个像“09a”的字符串,我需要一个方法来确认文本是否为十六进制.我发布的代码类似,它验证字符串是十进制数.我想做同样的,但是对于十六进制.

非常非常感谢你!

private static boolean isNumeric(String cadena) {
    try {

        Long.parseLong(cadena);
        return true;
    } catch (NumberFormatException nfe) {
        JOptionPane.showMessageDialog(null,"Uno de los números,excede su capacidad.");
        return false;
    }
}

解决方法

有一个重载的 Long.parseLong接受第二个参数,指定基数:
Long.parseLong(cadena,16);

或者,您可以遍历字符串中的字符,并对其调用Character.digit(c,16)(如果任何一个返回-1,那么它不是一个有效的十六进制数字).如果字符串太大而不能适应长整型(如注释中所指出的,如果使用第一种方法将导致异常),这一点尤其有用.例:

private static boolean isNumeric(String cadena) {
    if ( cadena.length() == 0 || 
         (cadena.charAt(0) != '-' && Character.digit(cadena.charAt(0),16) == -1))
        return false;
    if ( cadena.length() == 1 && cadena.charAt(0) == '-' )
        return false;

    for ( int i = 1 ; i < cadena.length() ; i++ )
        if ( Character.digit(cadena.charAt(i),16) == -1 )
            return false;
    return true;
}

BTW,我建议分开“测试一个有效的数字”和“向用户显示一个消息”的关注,这就是为什么我只是在上面的例子中返回false,而不是先通知用户.

最后,您可以使用正则表达式:

cadena.matches("-?[0-9a-fA-F]+");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读