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

前端之家收集整理的这篇文章主要介绍了java – 验证String是否为十六进制前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个像“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]+");

猜你在找的Java相关文章