如果您将以文本forms处理该数字,请更改:
if (text.contains("[a-zA-Z]+") == false && text.length() > 2){
至:
if (text.matches("[0-9]+") && text.length() > 2) {
而不是检查string不包含字母字符,检查确保它只包含数字。
如果你真的想要使用数值,可以使用Integer.parseInt()或者Double.parseDouble()正如其他人已经解释过的那样。
作为一个方面的说明,通常认为比较布尔值与true或false是不好的做法。 只要使用if (condition)或if (!condition) 。
您也可以使用Apache Commons中的NumberUtil.isNumber(String str)
这是我将如何做到这一点:
if(text.matches("^[0-9]*$") && text.length() > 2){ //... }
$将避免部分匹配,例如; 1B 。
在Java中有很多工具可以从String获取数字(反之亦然)。 你可能想跳过正则expression式部分,以避免复杂的。
例如,您可以尝试查看Double.parseDouble(String s)为您返回的内容。 如果在string中找不到合适的值,它应该抛出一个NumberFormatException 。 我会build议这种技术,因为你实际上可以使用由String表示的值作为数字types。
import java.util.*; class Class1 { public static void main(String[] argh) { boolean ans = CheckNumbers("123"); if (ans == true) { System.out.println("String contains numbers only"); } else { System.out.println("String contains other values as well"); } } public static boolean CheckNumbers(String input) { for (int ctr = 0; ctr < input.length(); ctr++) { if ("1234567890".contains(Character.valueOf(input.charAt(ctr)).toString())) { continue; } else { return false; } } return true; } }
你可以使用Regex.Match
if(text.matches("\\d*")&& text.length() > 2){ System.out.println("number"); }
或者你可以像Integer.parseInt(String)或更好的Long.parseLong(String)使用更大的数字,例如:
private boolean onlyContainsNumbers(String text) { try { Long.parseLong(text); return true; } catch (NumberFormatException ex) { return false; } }
然后testing:
if (onlyContainsNumbers(text) && text.length() > 2) { // do Stuff }
这段代码已经写好了。 如果你不介意(非常)小的性能命中 – 这可能不比做正则expression式匹配更糟 – 使用Integer.parseInt()或Double.parseDouble() 。 如果一个string只是数字(或者是一个数字,那么会马上告诉你)。 如果您需要处理更长的string,则BigInteger和BigDecimal体育构造函数接受string。 如果你尝试传递一个非数字(当然是基于你select的整数或小数),任何这些都会抛出一个NumberFormatExceptionexception 。 或者,根据您的要求,只需迭代string中的字符并检查Character.isDigit()和/或Character.isLetter() 。
boolean isNum = text.chars()。allMatch(c – > c> = 48 && c <= 57)
下面的正则expression式可以用来检查一个string是否只有数字:
if (str.matches(".*[^0-9].*")) or if (str.matches(".*\\D.*"))
如果String包含非数字,则上述两个条件都将返回true 。 在false ,string只有数字。