检查字符串是否可以在没有 try-catch 的情况下解析为 Long?
Long.parseLong("string")
如果字符串不可解析为 long,则引发错误。有没有办法比使用更快地验证字符串?谢谢try-catch
Long.parseLong("string")
如果字符串不可解析为 long,则引发错误。有没有办法比使用更快地验证字符串?谢谢try-catch
您可以创建相当复杂的正则表达式,但这不值得。在这里使用例外是绝对正常的。
这是很自然的特殊情况:你假设字符串中有一个整数,但确实有其他东西。应引发异常并正确处理。
如果您查看内部代码,您会发现有许多不同的验证和操作。如果你想在解析之前做所有这些事情,它会降低性能(如果我们谈论的是解析数百万个数字,因为否则就无关紧要了)。因此,如果您确实需要通过避免异常来提高性能,那么您唯一能做的就是:将实现复制到您自己的函数并返回NaN,而不是在所有对应的情况下都抛出异常。parseLong
parseLong
来自 commons-lang StringUtils:
public static boolean isNumeric(String str) {
if (str == null) {
return false;
}
int sz = str.length();
for (int i = 0; i < sz; i++) {
if (Character.isDigit(str.charAt(i)) == false) {
return false;
}
}
return true;
}