How to check if a string is numeric?
我有一个GPA程序,它与
http://www.coderanch.com/t/405258/java/java/string-isnumeric上探讨了许多选项
还有一个是
1 2 3 |
可能是杀伤力过大,但ApacheCommonsNumberUtils似乎也有一些助手。
如果允许您使用第三方库,请建议以下内容。
https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/math/numberutils.html
使用这个
1 2 3 4 5 6 7 8 9 10 11 | public static boolean isNum(String strNum) { boolean ret = true; try { Double.parseDouble(strNum); }catch (NumberFormatException e) { ret = false; } return ret; } |
。
您也可以使用Apache ECOMMONS StrugUntus.IsQuali-HTP://Acth.Apache .org/Ont/Corm Lang/JavaDoc/API2.6/Org/Apache/Caluns/Lang/StrugUTLS。
简单方法:
1 2 3 4 5 6 7 8 9 10 11 12 |
使用以下方法,
1 2 3 4 5 6 7 8 9 10 11 12 | public static boolean isNumeric(String str) { try { double d = Double.parseDouble(str); } catch(NumberFormatException nfe) { return false; } return true; } |
如果要使用正则表达式,可以使用如下所示:
1 2 3 4 | public static boolean isNumeric(String str) { return str.matches("-?\\d+(\\.\\d+)?"); //match a number with optional '-' and decimal. } |
号
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | public static boolean isNumeric(String string) { if (string == null || string.isEmpty()) { return false; } int i = 0; int stringLength = string.length(); if (string.charAt(0) == '-') { if (stringLength > 1) { i++; } else { return false; } } if (!Character.isDigit(string.charAt(i)) || !Character.isDigit(string.charAt(stringLength - 1))) { return false; } i++; stringLength--; if (i >= stringLength) { return true; } for (; i < stringLength; i++) { if (!Character.isDigit(string.charAt(i)) && string.charAt(i) != '.') { return false; } } return true; } |
。
我最后在程序中编写了这个小方法,这样我就可以检查一个字符串是否是数字,或者至少每个字符都是数字。
1 2 3 4 5 6 7 8 9 10 | private boolean isNumber(String text){ if(text != null || !text.equals("")) { char[] characters = text.toCharArray(); for (int i = 0; i < text.length(); i++) { if (characters[i] < 48 || characters[i] > 57) return false; } } return true; } |
。
可以使用character.isdigit(char ch)方法,也可以使用正则表达式。
下面是代码片段:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public class CheckDigit { private static Scanner input; public static void main(String[] args) { System.out.print("Enter a String:"); input = new Scanner(System.in); String str = input.nextLine(); if (CheckString(str)) { System.out.println(str +" is numeric"); } else { System.out.println(str +" is not numeric"); } } public static boolean CheckString(String str) { for (char c : str.toCharArray()) { if (!Character.isDigit(c)) return false; } return true; } |
}
要检查所有int字符,只需使用双负。如果(!)searchString.matches("[^0-9]+$")…
[^0-9]+$检查是否有非整数字符,如果为真,则测试失败。但不是那样,你就会成功。
以下是检查输入是否包含数字的方法:
1 2 3 | if (input.matches(".*\\d.*")) { // there's a digit somewhere in the input string } |
。