【问题标题】:Finding the first number of a .txt file - Java查找 .txt 文件的第一个数字 - Java
【发布时间】:2014-06-14 02:58:58
【问题描述】:

我有不同的 .txt 文件,应该由 Java 读取。那么java应该给我第一行的第一个数字,或者如果我说不同的话,第四个单词的第一个数字。

例如:

"AAAAAA B Version 5.0.1""AAAAAA B Version 6.0.2"

5 或 6 应该是结果数。

我已经尝试了一些方法,例如带有 line.charAt 的 bufferedReader,但我不知道如何使它适用于我的问题。你们有什么建议?

BufferedReader br = null;
br = new BufferedReader(new FileReader(new File("C:\\Users\\Desktop\\new2.txt")));
String line = null;
while((line = br.readLine()) != null) {
    String[] parts = line.startsWith(...?.); 
    System.out.println("");

【问题讨论】:

  • 听起来像是正则表达式的工作
  • @TimB 是的,我也尝试过使用模式和匹配。也许因为我现在在 java 方面经验丰富,所以我无法让它工作。
  • @tolgazinho 向我们展示表达式(将其编辑到您的帖子中)。我们可以帮助您解决问题。
  • ::sigh:: line.split("\\s")[3].split("\\.")[0];

标签: java text bufferedreader filereader


【解决方案1】:
Pattern p = Pattern.compile("-?\\d+");
Matcher m = p.matcher(Your string here);

if(m.find()) {
    System.out.println(m.group());
}

它试图找到一个负整数或正整数,如果能找到就打印出来。

【讨论】:

  • 尝试找到一个负整数或正整数,如果能找到就打印出来
  • @newbieee 编辑您的帖子进行解释,cmets 中的解释不是很明显;-)
  • @newbieee 对不起,我不太明白。如何在此处输入我的文本文件?
【解决方案2】:

首先,请确保您发布了完整的代码。当您实际拥有相关信息时,诊断问题会容易得多。 其次,您需要的是一个声明读取此 .txt 文件的扫描仪。

一个普通的扫描仪是这样定义的:

扫描仪 sc = new Scanner(System.in);

这将为您自己的文件读取系统输入。但是,如果您将文件声明为变量,则可以将 system.in 更改为您的文件。

【讨论】:

  • 为什么要读取System.in而不是读取文件的输入流?
【解决方案3】:

如果您知道每行中的第四个单词应该是版本号,只需抓住该单词并获取第一个字符。如果它不一定是第四个单词,请尝试在该行上使用 indexOf() 然后获取之前的字符,也就是说,如果您确定每一行都是这样设置的。

我的意思是说,如果已知每一行都具有您在上面显示的格式,您应该能够在小数点上使用 IndexOf()。

AAAAAA B 版本 5(.)0.1

或者使用split()分割空​​格,得到每个单词

parts = line.split(" ");

【讨论】:

  • 是的,它总是第四个字。这很重要,因为如果版本不是所选版本,它会影响程序中的某些设置。
  • 尝试使用拆分然后将每个单词保存到您的单词数组中,然后遍历第四个单词。这将是第一个字符。
【解决方案4】:

首先读取文件的第一行。

File f=new File("your_file.txt");
FileReader fr=new FileReader(f);
BufferedReader br=new BufferedReader(fr);
String firstLine=br.readLine();

然后用空格分割行得到单词的String数组

String[] words=firstLine.split("\\s+");

用“.”分割第四个单词

String[] nos=words[3].split("\\.");
    System.out.println(nos[0]);//Expected output, First number of fourth 
//word in first line of given file

【讨论】:

  • 这个效果很好,但问题是 String[] words=firstLine.split(" ");因为我在单词之间没有相同数量的空格。有时可以在它们之间找到 4 个空格。可以没有空间吗?
  • 现在你可以得到它了!我改变了答案
  • 是的,它工作得很好。非常感谢您的回答:)
猜你喜欢
  • 2019-02-25
  • 2021-06-22
  • 2018-10-16
  • 2011-10-29
  • 2013-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-12
相关资源
最近更新 更多