【问题标题】:Extract a numerical value from a file in java从java中的文件中提取数值
【发布时间】:2014-12-12 06:56:02
【问题描述】:

我的文件 (rates.txt) 包含:Abc defghijk lmn opqr st uvwxyza bc 19

我只想从文件中提取19 并将其存储为整数。

我该怎么做?

我尝试过使用子字符串,但不确定使用什么方法使其仅选择数值。

谢谢

【问题讨论】:

  • 您的答案也将取决于您的数据的一致性。数字数据总是在最后吗?是否总是只有一个数字标记,而所有其他标记都是字母?好奇的人想知道。
  • 就这么一条数据,我要做的就是导入数据,取出数字19,然后在程序中使用。

标签: java file integer substring extract


【解决方案1】:

如果你使用正则表达式会怎样。 试试这个(我假设你只有一个整数值):

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Tester {


 public static void main(String[] args) {
    Pattern pattern = Pattern.compile("\\D*(\\d+)\\D*");
    Matcher matcher = pattern.matcher("Abc defghijk lmn opqr st uvwxyza bc 19");

    try {
        if (matcher.find()) {
          String stringDigit = matcher.group(1);
          int number = Integer.parseInt(stringDigit);
          System.out.println(number);

        }
    } catch(Exception e) {

    }
  }

}

模式“\D*(\d+)\D*”的实际意思是:

\D*:多个非数字字符(包括零个字符)

\d+:多位数字字符

所以,我们正在搜索一些被一些非数字字符包围的数字字符。

Pattern.compile("\\D*(\\d+)\\D*");

【讨论】:

    【解决方案2】:
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class Main {
        public static void main(String[] args) {
            String text = "xAbc defghijk lmn opqr st uvwxyza bc 19";
            Pattern pattern = Pattern.compile("([0-9]+)");
            Matcher matcher = pattern.matcher(text);
            if(matcher.find()) {
                int number = Integer.valueOf(matcher.group(1));
                System.out.println("First number: "+number);
            }
            else {
                System.out.println("Not found");
            }
        }
    }
    

    【讨论】:

    • 仅代码的答案不如包含对代码正在做什么的解释的答案有用。 “教人钓鱼”等等。
    【解决方案3】:
    • 遍历文件中的每一行。
    • 为此,您可以使用 Iterator 及其方法 hasNext()
    • 检索到一行后,将其用空格分隔,如下所示:

      字符串 str = "";

      List splitElements = Arrays.asList(str.split("\s+"));

    • 然后,循环遍历列表中的每个元素,最好创建一个 helperMethod 来负责验证元素是否为数字。可以通过以下方式实现:

      public static boolean isNumeric(String string) {
      试试
      {
      int intString = Integer.parseInt(string);
      }
      捕获(NumberFormatException ex)
      {
      返回错误;
      }
      返回真;
      }

    • 请注意它只解析 int 数字,创建更多帮助方法,然后就完成了,希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-21
      • 2020-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多