【问题标题】:How to extract numbers from a text file [closed]如何从文本文件中提取数字[关闭]
【发布时间】:2013-11-12 23:24:34
【问题描述】:

我有一个看起来像这样的文本文件:

2009 年 1 月 1 日 76.0 81.1 68.1 86.7 99.2 97.5 92.9

我不明白的是如何只提取 7 个数字而不是日期。

到目前为止的编辑代码:

当我运行它时什么都没有打印出来?

File inputFile = new File ("C:/Users/Phillip/Documents/Temp/temperatures.txt .txt");
Scanner scan = new Scanner(inputFile);


  while (scan.hasNextLine())
  {
  String line = scan.nextLine(); 

  String[] words = line.split(" "); 

  for (int index = 1; index < words.length; index++)
   System.out.println(words[index]);

【问题讨论】:

  • 可能被空格分割并遍历数组?还是正则表达式?
  • 你不应该重新发布问题,而应该跟进你已经得到的线索:)
  • 您已经在last question 中获得了很多帮助。你需要自己做一些工作。这是您要问的非常基本的东西,最好您自己弄清楚,否则您根本不会了解 Java 编程。
  • 好吧,我需要更多帮助,而你不会提供帮助。我还是迷路了,你能看看我到目前为止得到了什么
  • @user2985204 除了为你写作业之外,真的没有更多的帮助了。到目前为止,您已经非常接近了。

标签: java string text int


【解决方案1】:

String#split 开头,将值拆分为单独的元素...

String text = "1/1/2009 76.0 81.1 68.1 86.7 99.2 97.5 92.9";
String[] parts = text.split(" ");
// You can now skip over the first element and process the remaining elements...
for (int index = 1; index < parts.length; index++) {
    // Convert the values as required...
}

您还应该查看JavaDocsStrings trail 了解更多详情

【讨论】:

  • 这是一个来自 OP 的作业问题;请不要直接给他答案。
  • 我在 text.split 上不断收到错误
  • @user2985204 对我来说很好。
  • @user2985204 所以尝试从概念到实现的飞跃,用你从文件中读取的内容更改我提供的内容。没有答案可能 100% 满足您的需求,您将不得不适应它。从文件中读取下一行后,应用我建议的概念...如何从 Scanner 中获得 String 行?
  • 我们不是在嘲笑你,而是在帮助你自助。用勺子喂你回答不会帮助你成为一个更好的程序。让您思考并建立想法和实施之间的联系 - 这就是编程的全部意义......
【解决方案2】:

使用带空格分隔符的字符串拆分方法。你会得到一个由 8 个字符串组成的数组,你的数字是从索引 1 到 7。

【讨论】:

    【解决方案3】:
    String line = "1/1/2009 76.0 81.1 68.1 86.7 99.2 97.5 92.9";
    
    String[] words = line.split(" ");
    

    会将行拆分为空格之间的单词数组。然后跳过 [0] 索引:

    for(int i = 1; i < words.length; i++)
        System.out.println(words[i]);
    

    只打印数字

    【讨论】:

    • 我得到一个错误,找不到符号:String[] words = line.split(" ");
    • words[1]?另外,这只会得到前 6 个数字...另外,我不是说这个吗?
    • 在修复错误之前我不知道会得到什么
    • 1 是一个错字,当我在写解决方案时,你发布了你的,所以我没看到。这不仅会获得前 6 个,而且会从索引 1 而不是 0 开始
    • 我的解决方案假设您有一个名为 line 的字符串变量,其中包含您问题中的行,因此 String line = "1/1blabla";
    【解决方案4】:

    首先删除前导输入,然后对空格分割的结果使用 foreach 循环。

    一行代码就可以搞定所有事情:

    for (String number : line.replaceAll("^\\S+\\s+", "").split("\\s+")) {
        // do something with "number"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 2014-12-06
      • 2016-01-20
      相关资源
      最近更新 更多