gpt4 book ai didi

java - 在txt文件中查找特定文本并将其存储在String中

转载 作者:行者123 更新时间:2023-11-29 04:45:50 27 4
gpt4 key购买 nike

首先我想说我是初学者,这是我的第一个 Java 程序。我想制作一个程序来读取文本文件、查找特定行并将其保存到我的字符串变量中。

所以我想找到以“Dealt to”开头的行,然后在该行中复制之后的所有内容,直到这个字符“[”并将其放入我的字符串变量中。

假设我的文本文件中有这一行:处理我的昵称[文本]我想要一个程序来查找文本“我的昵称”并将其放入我的字符串变量中。

我正在尝试使用类并尝试使用 setter 和 getter 只是为了练习,请让我知道我的代码是什么样子以及我如何改进它并使其工作。

这是 Main.java:

import java.io.IOException;

public class Main {
public static void main(String[] args) throws IOException{
HandHistory hh1 = new HandHistory();
String hero1 = null;

hero1 = hh1.getHero();
System.out.println(hero1);

}
}

我的 HandHistory.java:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class HandHistory {

private String hero;

public HandHistory(){}

public String getHero() throws IOException {
FileReader in = new FileReader("G:/Java/workspace/HandHistory/src/File.txt");
BufferedReader br = new BufferedReader(in);

String line;
while ((line = br.readLine()) != null) {
if (line.contains("Dealt to ")){
hero = line.substring(9,(line.indexOf("["))-1);

}
}
return hero;
}

public void setHero(String hero){
this.hero = hero;
}
}

最佳答案

这是一个好的开始,是逐行读取文件的好方法。一个值得解决的问题是通过使用 try-finally block 关闭 FileReader 资源,或者从 Java 7 开始使用新的 try-with-resources block :

try (FileReader in = new FileReader("G:/Java/workspace/HandHistory/src/File.txt")) {
...
}

我能想到的其他提示和评论:

  • 如果您实际上不需要,则不必在您的类(class)中设置二传手
  • 如果有行包含字符串“Dealt to”但不以该字符串开头,您的代码将不起作用。例如。 “Foobar Dealt to My NickName [text]”仍会匹配,但会返回错误值
  • 如果您真的只想匹配以“Dealt to”开头的行,请使用 String.startsWith() 而不是 String.contains()
  • 您应该处理字符串中没有“[”的情况,否则您的代码会因难以理解的错误而崩溃
  • 如果正则表达式可以消除代码的复杂性,那么它们就很有用。在你的情况下,问题可以通过使用 startsWith 和 indexOf 相对容易地解决,所以在这种情况下我不会使用 RegExps
  • 如果不查看实际代码,HandHistory.getHero() 的作用并不明显。为表达类或方法实际作用的事物指定名称总是非常有帮助的。
  • 可以说 getHero() 方法做了太多事情,HandHistory 类也是如此,但在将代码用于比学习 hello-world 示例更大的事情时,这可能是需要考虑的事情。

关于java - 在txt文件中查找特定文本并将其存储在String中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37244105/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com