我有一根这样的线:
/good/312321312/bad/3213122131
我必须从那里提取两组数字.
我想了两种解决方案:要么使用split()
,要么简单地编写一个正则表达式来匹配数字.
更好的解决方案性能是什么?
如果你还有其他建议,请告诉我.
我有一根这样的线:
/good/312321312/bad/3213122131
我必须从那里提取两组数字.
我想了两种解决方案:要么使用split()
,要么简单地编写一个正则表达式来匹配数字.
更好的解决方案性能是什么?
如果你还有其他建议,请告诉我.
使用分割方法might通常是更有效的方法.我们可以将输入拆分成组件,然后判断每个组件以确定它是否是一个长整数.
String path = "/good/312321312/bad/3213122131";
String[] parts = path.split("/");
List<Long> nums = new ArrayList<>();
for (String part : parts) {
try {
long num = Long.parseLong(part);
nums.add(num);
}
catch (NumberFormatException nfe) {
}
}
System.out.println("Found nums: " + nums);
这将打印以下内容:
Found nums: [312321312, 3213122131]
任何只使用基本字符串函数的解决方案都可能比调用正则表达式引擎的成本更高.