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); 或者,您可以遍历字符串中的字符,并对其调用 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]+"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |