java - 在 Java 中从文本文件中检索单个特定数字的有效方法

标签 java regex text-files

如果之前已经有人问过这个问题,我深表歉意;我尝试搜索,但没有找到任何与此接近的内容。

我有一个文本文件,已将其读入 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

我已经可以想象一种方法,它包括使用正则表达式进行两次连续搜索。第一个将搜索短语,然后第二个将搜索数字。然而,这对我来说似乎相当低效,必须在两个进程中创建 PatternMatcher 类的实例。

我认为必须有一些更有效的方法来执行此提取,而不需要两次正则表达式搜索。有这样的办法吗?或者这是连续两次搜索执行此操作的唯一方法?

修正案 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/

相关文章:

java - 用菱形形式的数字填充二维数组

javascript - 让这个正则表达式在 Javascript 中工作?

java - 从txt文件中删除特定行

c++ - 我将如何输出上述所有代码的输出?

Java和Regex,获取匹配的子字符串

java - 文本文件没有与类文件一起出现 - 可执行 jar

java - DeleteOnExit jvm 关闭

java - 在java smslib中访问和更改用户数据头

java - 如何将 JavaFX ImageView 转换为 InputStream

python - 正则表达式删除匹配的单词和连续的单词