首先,我想说我是开始,这是我的第一个Java程序。我想创建一个程序来读取文本文件,找到特定的行,并将其保存到我的字符串变量中。
所以我想找到以" Dealt to"开头的行,然后在那行中复制所有内容,直到这个字符为' ['并把它放在我的字符串变量中。
所以,让我们说我的文本文件中有这一行: 处理我的NickName [文字] 我想要一个能找到文字"我的昵称"并把它放在我的字符串变量中。
我尝试使用类并尝试使用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);
}
}
My 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;
}
}
答案 0 :(得分:2)
这是一个好的开始,逐行读取文件的好方法。值得修复的一个问题是使用try-finally块关闭FileReader资源,或者从Java 7开始使用try-with-resources块:
try (FileReader in = new FileReader("G:/Java/workspace/HandHistory/src/File.txt")) {
...
}
我能想到的其他提示和评论:
答案 1 :(得分:1)
我的建议是使用正则表达式。您可以尝试使用
(?<=beginningstringname)(.*\n?)(?=endstringname)
所以,对于你的问题,这将是
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches
{
public static void main( String args[] ){
// String to be scanned to find the pattern.
String line = "Dealt to My NickName [text]";
String pattern = "(?<=Dealt to )(.*\n?)(?=[)";
// Create a Pattern object
Pattern r = Pattern.compile(pattern);
// Now create matcher object.
Matcher m = r.matcher(line);
//m now haves what you desire. You can loop it if you want.
if (m.find( )) {
System.out.println("Found value: " + m.group(0) );
System.out.println("Found value: " + m.group(1) );
System.out.println("Found value: " + m.group(2) );
} else {
System.out.println("NO MATCH");
}
}
}
尝试使用本教程在Java http://www.tutorialspoint.com/java/java_regular_expressions.htm
中使用正则表达式