我知道我可以匹配数字Pattern.compile("\\d*");
但它不处理长的最小值/最大值。
对于与异常相关的性能问题,我不想尝试解析 long,除非它真的很长。
if ( LONG_PATTERN.matcher(timestampStr).matches() ) {
long timeStamp = Long.parseLong(timestampStr);
return new Date(timeStamp);
} else {
LOGGER.error("Can't convert " + timestampStr + " to a Date because it is not a timestamp! -> ");
return null;
}
我的意思是我不想要任何 try/catch 块,并且我不希望长时间引发异常,例如“564654954654464654654567879865132154778”,它超出了常规 Java long 的大小。
有人有一种模式来处理这种对原始 java 类型的需求吗?JDK是否提供了自动处理它的东西?Java中是否有故障安全解析机制?
谢谢
编辑:请假设“坏长字符串”不是例外情况。我不是要一个基准,我来这里是为了一个代表 long 的正则表达式,仅此而已。我知道正则表达式检查所需的额外时间,但至少我的长解析将始终保持不变,并且永远不会依赖于“坏长字符串”的百分比
我找不到链接了,但是 StackOverflow 上有一个很好的解析基准,它清楚地表明重用 sams 编译的正则表达式非常快,比抛出异常快很多,因此只有很小的异常阈值会使系统变慢比附加的正则表达式检查。