如果之前已经有人问过这个问题,我深表歉意;我尝试搜索,但没有找到任何与此接近的内容。
我有一个文本文件,已将其读入 Java 程序中的 String
中。我需要在该文本文件中搜索包含数字的特定短语,并提取该数字以保存到 int 变量中。以下是一个此类文件的示例摘录:
≥ ≥
≥CREDIT CARD TERMS ≥
≥ORDER IS ON HOLD FOR PREPAYMENT OF ORDER TOTAL + FREIGHT BY CREDIT CARD. ≥
≥ORDER TOTAL DOES NOT REFLECT FREIGHT COSTS & WILL BE CHARGED AFTER ORDER ≥
≥SHIPS. ORDER WILL SHIP _5_ WORKING DAYS FROM RECEIPT OF ALL APPROVALS & ≥
≥RECEIPT OF CREDIT CARD FORM. ≥
≥ ≥
此片段通常出现在文本文件的最下方,但在特定行上。我需要从文件中的短语“ORDER WILL SHIP _5_ WORKING DAYS
”中提取数字 5
。
我已经可以想象一种方法,它包括使用正则表达式进行两次连续搜索。第一个将搜索短语,然后第二个将搜索数字。然而,这对我来说似乎相当低效,必须在两个进程中创建 Pattern
和 Matcher
类的实例。
我认为必须有一些更有效的方法来执行此提取,而不需要两次正则表达式搜索。有这样的办法吗?或者这是连续两次搜索执行此操作的唯一方法?
修正案 03/30/2016:我忘记提及我需要提取的数字可能没有周围有下划线。这可能会影响任何不使用正则表达式的答案。
最佳答案
非正则表达式方式。但不确定它是否更有效:
static final String PREFIX = "ORDER WILL SHIP _";
String s = // file content
value = s.substring(s.indexOf(PREFIX) + PREFIX.length(), s.indexOf("_ WORKING DAYS"));
也应该可以使用单个正则表达式来完成
关于java - 在 Java 中从文本文件中检索单个特定数字的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36293586/