我有一个字符串,我假设是一个整数的零填充表示,有6位数字,例如:
"001234"
我想将它解析为Long对象,但我想检查它是否完全相同;如果它不是长度为6,而不是零填充等,我想返回错误
在C中我会使用scanf的一些变体。什么是Java方式?
答案 0 :(得分:2)
if(s.length() != 6)
throw new IllegalArgumentException("Input is not of length 6: " + s);
Pattern allDigits = Pattern.compile( "[0-9]+" );
if(!allDigits.matcher(s).matches())
throw new IllegalArgumentException("Input is not numeric: " + s);
long val = Long.parseLong(s);
答案 1 :(得分:2)
此代码段可能会对您有所帮助。
String test = "001234";
long correctValue = 0;
if (test.charAt(0) == '0' || test.length() != 6) {
System.out.println("padded or incorrect length");
} else {
correctValue = Long.parseLong(test);
}
System.out.println(correctValue);
答案 2 :(得分:1)
试试这个,诀窍是Long.parseLong不接受没有尾随或前导空格,但是接受前导零,所以你只需要检查长度= 6
String input = "001234";
if (input.length() != 6) {
throw new IllegalArgumentException(input);
}
long l = Long.parseLong(input);
实际上它接受非零填充“123456”,但我认为它符合您的要求。
答案 3 :(得分:1)
AleksanderBlomskøld的回答:
Pattern allDigits = Pattern.compile("^\d{6}$");
if (!allDigits.matcher(s).matches())
throw new IllegalArgumentException("Input is not numeric: " + s);
long val = Long.parseLong(s);
答案 4 :(得分:0)
我会在正则表达式中进行字符串验证。
如果有效,那么我会使用Long.parseLong
答案 5 :(得分:0)
Long#parseLong
可以帮到你。只需检查它是否有六位数,结果是正数。除了0之外,它不能用其他任何东西填充(因为那时解析将失败)。
答案 6 :(得分:-1)
你的意思是你想检查长度
if (text.length() != 6)