我有一根这样的线:

/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]

任何只使用基本字符串函数的解决方案都可能比调用正则表达式引擎的成本更高.

Java相关问答推荐

当耗时的代码完成时,Circular ProgressIndicator显示得太晚

在Java中测试DAO方法:假实现与内存数据库

为什么我们仍然需要实现noArgsConstructor如果Java默认提供一个非参数化的构造函数?''

尽管类型擦除,instanceof与泛型在Java中如何工作?

@ IdClass with @ Inheritance(策略= InheritanceType. SINGLE_TABLE)

Java中如何根据Font.canDisplay方法对字符串进行分段

如何使用Maven和Spring Boot将构建时初始化、跟踪类初始化正确传递到本机编译

Java LocalTime.parse在本地PC上的Spring Boot中工作,但在Docker容器中不工作

为什么S的文档中说常量方法句柄不能在类的常量池中表示?

如何让JavaFx应用程序识别依赖项?

Sack()步骤中的合并运算符未按预期工作

在向WebSphere中的文档添加元素时iText挂起

内存和硬盘中的Zip不同,这会导致下载后的Zip损坏

如何在Jooq中获取临时表列引用?

如何在IntelliJ IDEA的Build.sbt中添加外部JAR文件?

我的代码是线程安全的吗?[Java、CAS、转账]

如何从命令行编译包中的所有类?

rest api服务 spring 启动中出现IllegalFormatConversionException

";home/runner/work/中没有文件...匹配到[**/pom.xml];Maven项目的构建过程中出现错误

如何显示新布局